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