• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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