diff options
author | kalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-13 12:50:11 +0000 |
---|---|---|
committer | kalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-13 12:50:11 +0000 |
commit | 4a1d9c0d627ff07625e23f60f241e9dce38875f6 (patch) | |
tree | 1e557f39a9afcfbee3a7c5502283ea9cd73e54de /extensions/browser | |
parent | d753c94adbbe38d1163a3fda57e620626fd9c295 (diff) | |
download | chromium_src-4a1d9c0d627ff07625e23f60f241e9dce38875f6.zip chromium_src-4a1d9c0d627ff07625e23f60f241e9dce38875f6.tar.gz chromium_src-4a1d9c0d627ff07625e23f60f241e9dce38875f6.tar.bz2 |
Cleanup: Make ExtensionService:: and ExtensionPrefs::OnExtensionInstalled
take a bitmask instead of 4 boolean values (soon to be 5).
As part of that, change the default-true flag "wait for idle" to a
default-false flag "install immediately".
R=asargent@chromium.org
TBR=estade@chromium.org, atwilson@chromium.org, dimich@chromium.org
Review URL: https://codereview.chromium.org/322893002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@276999 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'extensions/browser')
-rw-r--r-- | extensions/browser/extension_prefs.cc | 20 | ||||
-rw-r--r-- | extensions/browser/extension_prefs.h | 30 | ||||
-rw-r--r-- | extensions/browser/install_flag.h | 31 |
3 files changed, 61 insertions, 20 deletions
diff --git a/extensions/browser/extension_prefs.cc b/extensions/browser/extension_prefs.cc index d8a2d8a..6741c62 100644 --- a/extensions/browser/extension_prefs.cc +++ b/extensions/browser/extension_prefs.cc @@ -19,6 +19,7 @@ #include "extensions/browser/extension_pref_store.h" #include "extensions/browser/extension_prefs_factory.h" #include "extensions/browser/extension_prefs_observer.h" +#include "extensions/browser/install_flag.h" #include "extensions/browser/pref_names.h" #include "extensions/common/feature_switch.h" #include "extensions/common/manifest.h" @@ -1239,9 +1240,8 @@ void ExtensionPrefs::SetKnownDisabled(const ExtensionIdSet& extension_ids) { void ExtensionPrefs::OnExtensionInstalled( const Extension* extension, Extension::State initial_state, - bool blacklisted_for_malware, - bool is_ephemeral, const syncer::StringOrdinal& page_ordinal, + int install_flags, const std::string& install_parameter) { ScopedExtensionPrefUpdate update(prefs_, extension->id()); base::DictionaryValue* extension_dict = update.Get(); @@ -1249,8 +1249,7 @@ void ExtensionPrefs::OnExtensionInstalled( PopulateExtensionInfoPrefs(extension, install_time, initial_state, - blacklisted_for_malware, - is_ephemeral, + install_flags, install_parameter, extension_dict); FinishExtensionInfoPrefs(extension->id(), install_time, @@ -1464,8 +1463,7 @@ ExtensionPrefs::GetUninstalledExtensionsInfo() const { void ExtensionPrefs::SetDelayedInstallInfo( const Extension* extension, Extension::State initial_state, - bool blacklisted_for_malware, - bool is_ephemeral, + int install_flags, DelayReason delay_reason, const syncer::StringOrdinal& page_ordinal, const std::string& install_parameter) { @@ -1473,8 +1471,7 @@ void ExtensionPrefs::SetDelayedInstallInfo( PopulateExtensionInfoPrefs(extension, time_provider_->GetCurrentTime(), initial_state, - blacklisted_for_malware, - is_ephemeral, + install_flags, install_parameter, extension_dict); @@ -2086,8 +2083,7 @@ void ExtensionPrefs::PopulateExtensionInfoPrefs( const Extension* extension, const base::Time install_time, Extension::State initial_state, - bool blacklisted_for_malware, - bool is_ephemeral, + int install_flags, const std::string& install_parameter, base::DictionaryValue* extension_dict) { // Leave the state blank for component extensions so that old chrome versions @@ -2113,9 +2109,11 @@ void ExtensionPrefs::PopulateExtensionInfoPrefs( extension_dict->Set(kPrefInstallTime, new base::StringValue( base::Int64ToString(install_time.ToInternalValue()))); - if (blacklisted_for_malware) + if (install_flags & kInstallFlagIsBlacklistedForMalware) extension_dict->Set(kPrefBlacklist, new base::FundamentalValue(true)); + // TODO(tmdiep): Delete the pref if false, don't write false. + bool is_ephemeral = (install_flags & kInstallFlagIsEphemeral) != 0; extension_dict->Set(kPrefEphemeralApp, new base::FundamentalValue(is_ephemeral)); diff --git a/extensions/browser/extension_prefs.h b/extensions/browser/extension_prefs.h index 50bb03b..dbd734d 100644 --- a/extensions/browser/extension_prefs.h +++ b/extensions/browser/extension_prefs.h @@ -20,6 +20,7 @@ #include "extensions/browser/app_sorting.h" #include "extensions/browser/blacklist_state.h" #include "extensions/browser/extension_scoped_prefs.h" +#include "extensions/browser/install_flag.h" #include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "extensions/common/url_pattern_set.h" @@ -184,15 +185,24 @@ class ExtensionPrefs : public ExtensionScopedPrefs, public KeyedService { void SetKnownDisabled(const ExtensionIdSet& extension_ids); // Called when an extension is installed, so that prefs get created. - // |blacklisted_for_malware| should be set if the extension was included in a - // blacklist due to being malware. If |page_ordinal| is an invalid ordinal, - // then a page will be found for the App. + // If |page_ordinal| is invalid then a page will be found for the App. + // |install_flags| are a bitmask of extension::InstallFlags. void OnExtensionInstalled(const Extension* extension, Extension::State initial_state, - bool blacklisted_for_malware, - bool is_ephemeral, const syncer::StringOrdinal& page_ordinal, + int install_flags, const std::string& install_parameter); + // OnExtensionInstalled with no install flags. + void OnExtensionInstalled(const Extension* extension, + Extension::State initial_state, + const syncer::StringOrdinal& page_ordinal, + const std::string& install_parameter) { + OnExtensionInstalled(extension, + initial_state, + page_ordinal, + kInstallFlagNone, + install_parameter); + } // Called when an extension is uninstalled, so that prefs get cleaned up. void OnExtensionUninstalled(const std::string& extension_id, @@ -444,10 +454,11 @@ class ExtensionPrefs : public ExtensionScopedPrefs, public KeyedService { // We've downloaded an updated .crx file for the extension, but are waiting // to install it. + // + // |install_flags| are a bitmask of extension::InstallFlags. void SetDelayedInstallInfo(const Extension* extension, Extension::State initial_state, - bool blacklisted_for_malware, - bool is_ephemeral, + int install_flags, DelayReason delay_reason, const syncer::StringOrdinal& page_ordinal, const std::string& install_parameter); @@ -676,11 +687,12 @@ class ExtensionPrefs : public ExtensionScopedPrefs, public KeyedService { // by a newly installed extension. Work is broken up between this // function and FinishExtensionInfoPrefs() to accomodate delayed // installations. + // + // |install_flags| are a bitmask of extension::InstallFlags. void PopulateExtensionInfoPrefs(const Extension* extension, const base::Time install_time, Extension::State initial_state, - bool blacklisted_for_malware, - bool is_ephemeral, + int install_flags, const std::string& install_parameter, base::DictionaryValue* extension_dict); diff --git a/extensions/browser/install_flag.h b/extensions/browser/install_flag.h new file mode 100644 index 0000000..b8eac99 --- /dev/null +++ b/extensions/browser/install_flag.h @@ -0,0 +1,31 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_EXTENSIONS_INSTALL_FLAG_H_ +#define CHROME_BROWSER_EXTENSIONS_INSTALL_FLAG_H_ + +namespace extensions { + +// Flags used when installing an extension, through ExtensionService and +// ExtensionPrefs and beyond. +enum InstallFlag { + kInstallFlagNone = 0, + + // The requirements of the extension weren't met (for example graphics + // capabilities). + kInstallFlagHasRequirementErrors = 1 << 0, + + // Extension is blacklisted for being malware. + kInstallFlagIsBlacklistedForMalware = 1 << 1, + + // This is an ephemeral app. + kInstallFlagIsEphemeral = 1 << 2, + + // Install the extension immediately, don't wait until idle. + kInstallFlagInstallImmediately = 1 << 3, +}; + +} // namespace extensions + +#endif // CHROME_BROWSER_EXTENSIONS_INSTALL_FLAG_H_ |