summaryrefslogtreecommitdiffstats
path: root/extensions/browser
diff options
context:
space:
mode:
authorkalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-13 12:50:11 +0000
committerkalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-13 12:50:11 +0000
commit4a1d9c0d627ff07625e23f60f241e9dce38875f6 (patch)
tree1e557f39a9afcfbee3a7c5502283ea9cd73e54de /extensions/browser
parentd753c94adbbe38d1163a3fda57e620626fd9c295 (diff)
downloadchromium_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.cc20
-rw-r--r--extensions/browser/extension_prefs.h30
-rw-r--r--extensions/browser/install_flag.h31
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_