diff options
Diffstat (limited to 'chromium/extensions/browser/api/api_resource.h')
-rw-r--r-- | chromium/extensions/browser/api/api_resource.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/chromium/extensions/browser/api/api_resource.h b/chromium/extensions/browser/api/api_resource.h new file mode 100644 index 00000000000..f068103415e --- /dev/null +++ b/chromium/extensions/browser/api/api_resource.h @@ -0,0 +1,43 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef EXTENSIONS_BROWSER_API_API_RESOURCE_H_ +#define EXTENSIONS_BROWSER_API_API_RESOURCE_H_ + +#include "base/macros.h" +#include "base/memory/ref_counted.h" +#include "content/public/browser/browser_thread.h" +#include "extensions/common/extension.h" + +namespace extensions { + +// An ApiResource represents something that an extension API manages, such as a +// socket or a serial-port connection. Typically, an ApiResourceManager will +// control the lifetime of all ApiResources of a specific derived type. +class ApiResource { + public: + virtual ~ApiResource(); + + const std::string& owner_extension_id() const { return owner_extension_id_; } + + // If this method returns |true|, the resource remains open when the + // owning extension is suspended due to inactivity. + virtual bool IsPersistent() const; + + static const content::BrowserThread::ID kThreadId = + content::BrowserThread::IO; + + protected: + explicit ApiResource(const std::string& owner_extension_id); + + private: + // The extension that owns this resource. + const std::string owner_extension_id_; + + DISALLOW_COPY_AND_ASSIGN(ApiResource); +}; + +} // namespace extensions + +#endif // EXTENSIONS_BROWSER_API_API_RESOURCE_H_ |