Home | History | Annotate | Download | only in extensions
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_EXTENSIONS_DEFAULT_APPS_H_
      6 #define CHROME_BROWSER_EXTENSIONS_DEFAULT_APPS_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "chrome/browser/extensions/external_provider_impl.h"
     10 #include "extensions/common/manifest.h"
     11 
     12 class Profile;
     13 
     14 namespace base {
     15 class DictionaryValue;
     16 }
     17 
     18 namespace user_prefs {
     19 class PrefRegistrySyncable;
     20 }
     21 
     22 // Functions and types related to installing default apps.
     23 namespace default_apps {
     24 
     25 // These enum values are persisted in the user preferences, so they should not
     26 // be changed.
     27 enum InstallState {
     28   kUnknown,
     29   // Now unused, left for backward compatibility.
     30   kProvideLegacyDefaultApps,
     31   kNeverInstallDefaultApps,
     32   kAlreadyInstalledDefaultApps
     33 };
     34 
     35 // Register preference properties used by default apps to maintain
     36 // install state.
     37 void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
     38 
     39 // A specialization of the ExternalProviderImpl that conditionally installs apps
     40 // from the chrome::DIR_DEFAULT_APPS location based on a preference in the
     41 // profile.
     42 class Provider : public extensions::ExternalProviderImpl {
     43  public:
     44   Provider(Profile* profile,
     45            VisitorInterface* service,
     46            extensions::ExternalLoader* loader,
     47            extensions::Manifest::Location crx_location,
     48            extensions::Manifest::Location download_location,
     49            int creation_flags);
     50 
     51   bool ShouldInstallInProfile();
     52 
     53   // ExternalProviderImpl overrides:
     54   virtual void VisitRegisteredExtension() OVERRIDE;
     55   virtual void SetPrefs(base::DictionaryValue* prefs) OVERRIDE;
     56 
     57  private:
     58   Profile* profile_;
     59   bool is_migration_;
     60 
     61   DISALLOW_COPY_AND_ASSIGN(Provider);
     62 };
     63 
     64 }  // namespace default_apps
     65 
     66 #endif  // CHROME_BROWSER_EXTENSIONS_DEFAULT_APPS_H_
     67