| // Copyright (c) 2011 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 CHROME_BROWSER_EXTENSIONS_EXTERNAL_EXTENSION_PROVIDER_INTERFACE_H_ |
| #define CHROME_BROWSER_EXTENSIONS_EXTERNAL_EXTENSION_PROVIDER_INTERFACE_H_ |
| #pragma once |
| |
| #include <vector> |
| |
| #include "base/memory/linked_ptr.h" |
| #include "chrome/common/extensions/extension.h" |
| |
| class FilePath; |
| class Version; |
| |
| // This class is an abstract class for implementing external extensions |
| // providers. |
| class ExternalExtensionProviderInterface { |
| public: |
| // ExternalExtensionProvider uses this interface to communicate back to the |
| // caller what extensions are registered, and which |id|, |version| and |path| |
| // they have. See also VisitRegisteredExtension below. Ownership of |version| |
| // is not transferred to the visitor. Callers of the methods below must |
| // ensure that |id| is a valid extension id (use Extension::IdIsValid(id)). |
| class VisitorInterface { |
| public: |
| virtual void OnExternalExtensionFileFound( |
| const std::string& id, |
| const Version* version, |
| const FilePath& path, |
| Extension::Location location) = 0; |
| |
| virtual void OnExternalExtensionUpdateUrlFound( |
| const std::string& id, |
| const GURL& update_url, |
| Extension::Location location) = 0; |
| |
| // Called after all the external extensions have been reported through |
| // the above two methods. |
| virtual void OnExternalProviderReady() = 0; |
| |
| protected: |
| virtual ~VisitorInterface() {} |
| }; |
| |
| virtual ~ExternalExtensionProviderInterface() {} |
| |
| // The visitor (ExtensionsService) calls this function before it goes away. |
| virtual void ServiceShutdown() = 0; |
| |
| // Enumerate registered extensions, calling |
| // OnExternalExtension(File|UpdateUrl)Found on the |visitor| object for each |
| // registered extension found. |
| virtual void VisitRegisteredExtension() const = 0; |
| |
| // Test if this provider has an extension with id |id| registered. |
| virtual bool HasExtension(const std::string& id) const = 0; |
| |
| // Gets details of an extension by its id. Output params will be set only |
| // if they are not NULL. If an output parameter is not specified by the |
| // provider type, it will not be changed. |
| // This function is no longer used outside unit tests. |
| virtual bool GetExtensionDetails(const std::string& id, |
| Extension::Location* location, |
| scoped_ptr<Version>* version) const = 0; |
| |
| // Determines if this provider had loaded the list of external extensions |
| // from its source. |
| virtual bool IsReady() = 0; |
| }; |
| |
| typedef std::vector<linked_ptr<ExternalExtensionProviderInterface> > |
| ProviderCollection; |
| |
| #endif // CHROME_BROWSER_EXTENSIONS_EXTERNAL_EXTENSION_PROVIDER_INTERFACE_H_ |