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 12class Profile; 13 14namespace base { 15class DictionaryValue; 16} 17 18namespace user_prefs { 19class PrefRegistrySyncable; 20} 21 22// Functions and types related to installing default apps. 23namespace default_apps { 24 25// These enum values are persisted in the user preferences, so they should not 26// be changed. 27enum 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. 37void 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. 42class 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