| Index: chrome/browser/extensions/extension_preference_helpers.cc
|
| diff --git a/chrome/browser/extensions/extension_preference_helpers.cc b/chrome/browser/extensions/extension_preference_helpers.cc
|
| index 55bbe1b179844306f0b109149f0107cf5d43a703..a8a2c54eca8ef59084bbb16120d4403ab2c7f179 100644
|
| --- a/chrome/browser/extensions/extension_preference_helpers.cc
|
| +++ b/chrome/browser/extensions/extension_preference_helpers.cc
|
| @@ -1,15 +1,24 @@
|
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Copyright (c) 2012 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.
|
|
|
| #include "chrome/browser/extensions/extension_preference_helpers.h"
|
|
|
| +#include "chrome/browser/extensions/extension_prefs.h"
|
| +#include "chrome/browser/extensions/extension_service.h"
|
| +#include "chrome/browser/profiles/profile.h"
|
| +
|
| namespace {
|
|
|
| const char kIncognitoPersistent[] = "incognito_persistent";
|
| const char kIncognitoSessionOnly[] = "incognito_session_only";
|
| const char kRegular[] = "regular";
|
|
|
| +const char kNotControllable[] = "not_controllable";
|
| +const char kControlledByOtherExtensions[] = "controlled_by_other_extensions";
|
| +const char kControllableByThisExtension[] = "controllable_by_this_extension";
|
| +const char kControlledByThisExtension[] = "controlled_by_this_extension";
|
| +
|
| } // namespace
|
|
|
| namespace extension_preference_helpers {
|
| @@ -26,4 +35,28 @@ bool StringToScope(const std::string& s, ExtensionPrefsScope* scope) {
|
| return true;
|
| }
|
|
|
| +const char* GetLevelOfControl(
|
| + Profile* profile,
|
| + const std::string& extension_id,
|
| + const std::string& browser_pref,
|
| + bool incognito) {
|
| + PrefService* prefs = incognito ? profile->GetOffTheRecordPrefs()
|
| + : profile->GetPrefs();
|
| + const PrefService::Preference* pref =
|
| + prefs->FindPreference(browser_pref.c_str());
|
| + CHECK(pref);
|
| + ExtensionPrefs* ep = profile->GetExtensionService()->extension_prefs();
|
| +
|
| + if (!pref->IsExtensionModifiable())
|
| + return kNotControllable;
|
| +
|
| + if (ep->DoesExtensionControlPref(extension_id, browser_pref, incognito))
|
| + return kControlledByThisExtension;
|
| +
|
| + if (ep->CanExtensionControlPref(extension_id, browser_pref, incognito))
|
| + return kControllableByThisExtension;
|
| +
|
| + return kControlledByOtherExtensions;
|
| +}
|
| +
|
| } // namespace extension_preference_helpers
|
|
|