blob: c33fd25e111e39151bc6f87201588adf5bfc3b54 [file] [log] [blame]
// 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 ATHENA_EXTENSIONS_PUBLIC_EXTENSIONS_DELEGATE_H_
#define ATHENA_EXTENSIONS_PUBLIC_EXTENSIONS_DELEGATE_H_
#include <string>
#include "athena/athena_export.h"
#include "base/memory/scoped_ptr.h"
namespace content {
class BrowserContext;
class WebContents;
}
namespace extensions {
class ExtensionInstallUI;
class ExtensionSet;
}
namespace athena {
// A delegate interface to extension implentation.
class ATHENA_EXPORT ExtensionsDelegate {
public:
static ExtensionsDelegate* Get(content::BrowserContext* context);
// Creates the extension delegate.
static void CreateExtensionsDelegate(
content::BrowserContext* context);
// Creates the extension delegate for test environment.
static void CreateExtensionsDelegateForTest();
// Deletes the singleton instance. This must be called in the reverse
// order of the initialization.
static void Shutdown();
ExtensionsDelegate();
virtual ~ExtensionsDelegate();
virtual content::BrowserContext* GetBrowserContext() const = 0;
// Returns the set of extensions that are currently installed.
virtual const extensions::ExtensionSet& GetInstalledExtensions() = 0;
// Starts an application. Returns true if the application was
// successfully started.
// TODO(oshima): Add launcher source type. (see chrome_launcher_types.h)
virtual bool LaunchApp(const std::string& app_id) = 0;
// Unload an application. Returns true if the application was
// successfully unloaded.
virtual bool UnloadApp(const std::string& app_id) = 0;
virtual scoped_ptr<extensions::ExtensionInstallUI>
CreateExtensionInstallUI() = 0;
};
} // namespace athena
#endif // ATHENA_EXTENSIONS_PUBLIC_EXTENSIONS_DELEGATE_H_