| Index: chrome/browser/chromeos/lock_screen_apps/app_manager_impl.h
|
| diff --git a/chrome/browser/chromeos/lock_screen_apps/app_manager_impl.h b/chrome/browser/chromeos/lock_screen_apps/app_manager_impl.h
|
| index d1cd759037954b44af909e65d92b51ff9ce2fb32..c47e48513c497551c649db22972c76fc82c7db4d 100644
|
| --- a/chrome/browser/chromeos/lock_screen_apps/app_manager_impl.h
|
| +++ b/chrome/browser/chromeos/lock_screen_apps/app_manager_impl.h
|
| @@ -5,16 +5,28 @@
|
| #ifndef CHROME_BROWSER_CHROMEOS_LOCK_SCREEN_APPS_APP_MANAGER_IMPL_H_
|
| #define CHROME_BROWSER_CHROMEOS_LOCK_SCREEN_APPS_APP_MANAGER_IMPL_H_
|
|
|
| +#include <string>
|
| +
|
| #include "base/callback.h"
|
| #include "base/macros.h"
|
| +#include "base/memory/weak_ptr.h"
|
| +#include "base/scoped_observer.h"
|
| #include "chrome/browser/chromeos/lock_screen_apps/app_manager.h"
|
| +#include "components/prefs/pref_change_registrar.h"
|
| +#include "extensions/browser/extension_registry_observer.h"
|
|
|
| class Profile;
|
|
|
| +namespace extensions {
|
| +class Extension;
|
| +class ExtensionRegistry;
|
| +} // namespace extensions
|
| +
|
| namespace lock_screen_apps {
|
|
|
| // The default implementation of lock_screen_apps::AppManager.
|
| -class AppManagerImpl : public AppManager {
|
| +class AppManagerImpl : public AppManager,
|
| + public extensions::ExtensionRegistryObserver {
|
| public:
|
| AppManagerImpl();
|
| ~AppManagerImpl() override;
|
| @@ -28,12 +40,80 @@ class AppManagerImpl : public AppManager {
|
| bool IsNoteTakingAppAvailable() const override;
|
| std::string GetNoteTakingAppId() const override;
|
|
|
| + // extensions::ExtensionRegistryObserver implementation:
|
| + void OnExtensionLoaded(content::BrowserContext* browser_context,
|
| + const extensions::Extension* extension) override;
|
| + void OnExtensionUnloaded(content::BrowserContext* browser_context,
|
| + const extensions::Extension* extension,
|
| + extensions::UnloadedExtensionReason reason) override;
|
| +
|
| private:
|
| + enum class State {
|
| + // The manager has not yet been initialized.
|
| + kNotInitialized,
|
| + // The manager is initialized, but not started. The note taking app is
|
| + // considered unset at this point, and cannot be launched.
|
| + kInactive,
|
| + // The manager is started. Lock screen note taking app, if set, is loaded
|
| + // and ready to be launched.
|
| + kActive,
|
| + // The manager is started, but app is still being installed into the lock
|
| + // screen apps profile.
|
| + kActivating,
|
| + // The manager is started, and there is no available lock screen enabled
|
| + // app.
|
| + kAppUnavailable,
|
| + };
|
| +
|
| + // Called on UI thread when the lock screen app profile is initialized with
|
| + // lock screen app assets. It completes the app installation to the lock
|
| + // screen app profile.
|
| + // |app| - the installing app. Cann be nullptr in case the app assets
|
| + // installation failed.
|
| + void CompleteLockScreenAppInstall(
|
| + int install_id,
|
| + const scoped_refptr<const extensions::Extension>& app);
|
| +
|
| + // Installs app to the lock screen profile's extension service and enables
|
| + // the app.
|
| + void InstallAndEnableLockScreenAppInLockScreenProfile(
|
| + const extensions::Extension* app);
|
| +
|
| + // Called when note taking related prefs change.
|
| + void OnNoteTakingExtensionChanged();
|
| +
|
| + // Gets the currently enabled lock screen note taking app, is one is selected.
|
| + // If no such app exists, returns an empty string.
|
| + std::string FindLockScreenNoteTakingApp() const;
|
| +
|
| + // Starts installing the lock screen note taking app to the lock screen
|
| + // profile.
|
| + // Returns the state to which the app manager should move as a result of this
|
| + // method.
|
| + State AddAppToLockScreenProfile(const std::string& app_id);
|
| +
|
| + // Uninstalls lock screen note taking app from the lock screen profile.
|
| + void RemoveAppFromLockScreenProfile(const std::string& app_id);
|
| +
|
| Profile* primary_profile_ = nullptr;
|
| Profile* lock_screen_profile_ = nullptr;
|
|
|
| + State state_ = State::kNotInitialized;
|
| + std::string lock_screen_app_id_;
|
| +
|
| + PrefChangeRegistrar pref_change_registrar_;
|
| + ScopedObserver<extensions::ExtensionRegistry,
|
| + extensions::ExtensionRegistryObserver>
|
| + extensions_observer_;
|
| +
|
| base::Closure note_taking_changed_callback_;
|
|
|
| + // Counts app installs. Passed to app install callback as install request
|
| + // identifier to determine whether the completed install is stale.
|
| + int install_count_ = 0;
|
| +
|
| + base::WeakPtrFactory<AppManagerImpl> weak_ptr_factory_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(AppManagerImpl);
|
| };
|
|
|
|
|