Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3082)

Unified Diff: chrome/browser/extensions/extension_content_settings_api.cc

Issue 10381097: Move content settings extension API to content_settings dir. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: fixed conflict Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/extension_content_settings_api.cc
diff --git a/chrome/browser/extensions/extension_content_settings_api.cc b/chrome/browser/extensions/extension_content_settings_api.cc
deleted file mode 100644
index d08b250109c690da15a292f31404a953a0a1acab..0000000000000000000000000000000000000000
--- a/chrome/browser/extensions/extension_content_settings_api.cc
+++ /dev/null
@@ -1,308 +0,0 @@
-// 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_content_settings_api.h"
-
-#include <vector>
-
-#include "base/bind.h"
-#include "base/command_line.h"
-#include "base/values.h"
-#include "chrome/browser/content_settings/cookie_settings.h"
-#include "chrome/browser/content_settings/host_content_settings_map.h"
-#include "chrome/browser/extensions/extension_content_settings_api_constants.h"
-#include "chrome/browser/extensions/extension_content_settings_helpers.h"
-#include "chrome/browser/extensions/extension_content_settings_store.h"
-#include "chrome/browser/extensions/extension_preference_api_constants.h"
-#include "chrome/browser/extensions/extension_preference_helpers.h"
-#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/common/chrome_switches.h"
-#include "chrome/common/extensions/extension_error_utils.h"
-#include "content/public/browser/plugin_service.h"
-#include "webkit/plugins/npapi/plugin_group.h"
-
-using content::BrowserThread;
-using content::PluginService;
-
-namespace helpers = extension_content_settings_helpers;
-namespace keys = extension_content_settings_api_constants;
-namespace pref_helpers = extension_preference_helpers;
-namespace pref_keys = extension_preference_api_constants;
-
-namespace {
-
-const std::vector<webkit::npapi::PluginGroup>* g_testing_plugin_groups_;
-
-} // namespace
-
-bool ClearContentSettingsFunction::RunImpl() {
- std::string content_type_str;
- EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &content_type_str));
- ContentSettingsType content_type =
- helpers::StringToContentSettingsType(content_type_str);
- EXTENSION_FUNCTION_VALIDATE(content_type != CONTENT_SETTINGS_TYPE_DEFAULT);
-
- DictionaryValue* details = NULL;
- EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(1, &details));
-
- ExtensionPrefsScope scope = kExtensionPrefsScopeRegular;
- if (details->HasKey(pref_keys::kScopeKey)) {
- std::string scope_str;
- EXTENSION_FUNCTION_VALIDATE(details->GetString(pref_keys::kScopeKey,
- &scope_str));
-
- EXTENSION_FUNCTION_VALIDATE(pref_helpers::StringToScope(scope_str, &scope));
- EXTENSION_FUNCTION_VALIDATE(
- scope != kExtensionPrefsScopeIncognitoPersistent);
- }
-
- bool incognito = (scope == kExtensionPrefsScopeIncognitoPersistent ||
- scope == kExtensionPrefsScopeIncognitoSessionOnly);
- if (incognito) {
- // We don't check incognito permissions here, as an extension should be
- // always allowed to clear its own settings.
- } else {
- // Incognito profiles can't access regular mode ever, they only exist in
- // split mode.
- if (profile()->IsOffTheRecord()) {
- error_ = keys::kIncognitoContextError;
- return false;
- }
- }
-
- ExtensionContentSettingsStore* store =
- profile_->GetExtensionService()->GetExtensionContentSettingsStore();
- store->ClearContentSettingsForExtension(extension_id(), scope);
-
- return true;
-}
-
-bool GetContentSettingFunction::RunImpl() {
- std::string content_type_str;
- EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &content_type_str));
- ContentSettingsType content_type =
- helpers::StringToContentSettingsType(content_type_str);
- EXTENSION_FUNCTION_VALIDATE(content_type != CONTENT_SETTINGS_TYPE_DEFAULT);
-
- DictionaryValue* details = NULL;
- EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(1, &details));
-
- std::string primary_url_spec;
- EXTENSION_FUNCTION_VALIDATE(
- details->GetString(keys::kPrimaryUrlKey, &primary_url_spec));
- GURL primary_url(primary_url_spec);
- if (!primary_url.is_valid()) {
- error_ = ExtensionErrorUtils::FormatErrorMessage(keys::kInvalidUrlError,
- primary_url_spec);
- return false;
- }
-
- GURL secondary_url(primary_url);
- std::string secondary_url_spec;
- if (details->GetString(keys::kSecondaryUrlKey, &secondary_url_spec)) {
- secondary_url = GURL(secondary_url_spec);
- if (!secondary_url.is_valid()) {
- error_ = ExtensionErrorUtils::FormatErrorMessage(keys::kInvalidUrlError,
- secondary_url_spec);
- return false;
- }
- }
-
- std::string resource_identifier;
- if (details->HasKey(keys::kResourceIdentifierKey)) {
- DictionaryValue* resource_identifier_dict = NULL;
- EXTENSION_FUNCTION_VALIDATE(
- details->GetDictionary(keys::kResourceIdentifierKey,
- &resource_identifier_dict));
- EXTENSION_FUNCTION_VALIDATE(
- resource_identifier_dict->GetString(keys::kIdKey,
- &resource_identifier));
- }
-
- bool incognito = false;
- if (details->HasKey(pref_keys::kIncognitoKey)) {
- EXTENSION_FUNCTION_VALIDATE(
- details->GetBoolean(pref_keys::kIncognitoKey, &incognito));
- }
- if (incognito && !include_incognito()) {
- error_ = pref_keys::kIncognitoErrorMessage;
- return false;
- }
-
- HostContentSettingsMap* map;
- CookieSettings* cookie_settings;
- if (incognito) {
- if (!profile()->HasOffTheRecordProfile()) {
- // TODO(bauerb): Allow reading incognito content settings
- // outside of an incognito session.
- error_ = keys::kIncognitoSessionOnlyError;
- return false;
- }
- map = profile()->GetOffTheRecordProfile()->GetHostContentSettingsMap();
- cookie_settings = CookieSettings::Factory::GetForProfile(
- profile()->GetOffTheRecordProfile());
- } else {
- map = profile()->GetHostContentSettingsMap();
- cookie_settings = CookieSettings::Factory::GetForProfile(profile());
- }
-
- ContentSetting setting;
- if (content_type == CONTENT_SETTINGS_TYPE_COOKIES) {
- // TODO(jochen): Do we return the value for setting or for reading cookies?
- bool setting_cookie = false;
- setting = cookie_settings->GetCookieSetting(primary_url, secondary_url,
- setting_cookie, NULL);
- } else {
- setting = map->GetContentSetting(primary_url, secondary_url, content_type,
- resource_identifier);
- }
-
- DictionaryValue* result = new DictionaryValue();
- result->SetString(keys::kContentSettingKey,
- helpers::ContentSettingToString(setting));
-
- result_.reset(result);
-
- return true;
-}
-
-bool SetContentSettingFunction::RunImpl() {
- std::string content_type_str;
- EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &content_type_str));
- ContentSettingsType content_type =
- helpers::StringToContentSettingsType(content_type_str);
- EXTENSION_FUNCTION_VALIDATE(content_type != CONTENT_SETTINGS_TYPE_DEFAULT);
-
- DictionaryValue* details = NULL;
- EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(1, &details));
-
- std::string primary_pattern_str;
- EXTENSION_FUNCTION_VALIDATE(
- details->GetString(keys::kPrimaryPatternKey, &primary_pattern_str));
- std::string primary_error;
- ContentSettingsPattern primary_pattern =
- helpers::ParseExtensionPattern(primary_pattern_str, &primary_error);
- if (!primary_pattern.IsValid()) {
- error_ = primary_error;
- return false;
- }
-
- ContentSettingsPattern secondary_pattern = ContentSettingsPattern::Wildcard();
- std::string secondary_pattern_str;
- if (details->GetString(keys::kSecondaryPatternKey, &secondary_pattern_str)) {
- std::string secondary_error;
- secondary_pattern =
- helpers::ParseExtensionPattern(secondary_pattern_str, &secondary_error);
- if (!secondary_pattern.IsValid()) {
- error_ = secondary_error;
- return false;
- }
- }
-
- std::string resource_identifier;
- if (details->HasKey(keys::kResourceIdentifierKey)) {
- DictionaryValue* resource_identifier_dict = NULL;
- EXTENSION_FUNCTION_VALIDATE(
- details->GetDictionary(keys::kResourceIdentifierKey,
- &resource_identifier_dict));
- EXTENSION_FUNCTION_VALIDATE(
- resource_identifier_dict->GetString(keys::kIdKey,
- &resource_identifier));
- }
-
- std::string setting_str;
- EXTENSION_FUNCTION_VALIDATE(
- details->GetString(keys::kContentSettingKey, &setting_str));
- ContentSetting setting = CONTENT_SETTING_DEFAULT;
- EXTENSION_FUNCTION_VALIDATE(
- helpers::StringToContentSetting(setting_str, &setting));
- EXTENSION_FUNCTION_VALIDATE(
- HostContentSettingsMap::IsSettingAllowedForType(setting, content_type));
-
- ExtensionPrefsScope scope = kExtensionPrefsScopeRegular;
- if (details->HasKey(pref_keys::kScopeKey)) {
- std::string scope_str;
- EXTENSION_FUNCTION_VALIDATE(details->GetString(pref_keys::kScopeKey,
- &scope_str));
-
- EXTENSION_FUNCTION_VALIDATE(pref_helpers::StringToScope(scope_str, &scope));
- EXTENSION_FUNCTION_VALIDATE(
- scope != kExtensionPrefsScopeIncognitoPersistent);
- }
-
- bool incognito = (scope == kExtensionPrefsScopeIncognitoPersistent ||
- scope == kExtensionPrefsScopeIncognitoSessionOnly);
- if (incognito) {
- // Regular profiles can't access incognito unless include_incognito is true.
- if (!profile()->IsOffTheRecord() && !include_incognito()) {
- error_ = pref_keys::kIncognitoErrorMessage;
- return false;
- }
- } else {
- // Incognito profiles can't access regular mode ever, they only exist in
- // split mode.
- if (profile()->IsOffTheRecord()) {
- error_ = keys::kIncognitoContextError;
- return false;
- }
- }
-
- if (scope == kExtensionPrefsScopeIncognitoSessionOnly &&
- !profile_->HasOffTheRecordProfile()) {
- error_ = pref_keys::kIncognitoSessionOnlyErrorMessage;
- return false;
- }
-
- ExtensionContentSettingsStore* store =
- profile_->GetExtensionService()->GetExtensionContentSettingsStore();
- store->SetExtensionContentSetting(extension_id(), primary_pattern,
- secondary_pattern, content_type,
- resource_identifier, setting, scope);
- return true;
-}
-
-bool GetResourceIdentifiersFunction::RunImpl() {
- std::string content_type_str;
- EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &content_type_str));
- ContentSettingsType content_type =
- helpers::StringToContentSettingsType(content_type_str);
- EXTENSION_FUNCTION_VALIDATE(content_type != CONTENT_SETTINGS_TYPE_DEFAULT);
-
- if (content_type == CONTENT_SETTINGS_TYPE_PLUGINS) {
- if (g_testing_plugin_groups_) {
- OnGotPluginGroups(*g_testing_plugin_groups_);
- } else {
- PluginService::GetInstance()->GetPluginGroups(
- base::Bind(&GetResourceIdentifiersFunction::OnGotPluginGroups, this));
- }
- } else {
- SendResponse(true);
- }
-
- return true;
-}
-
-void GetResourceIdentifiersFunction::OnGotPluginGroups(
- const std::vector<webkit::npapi::PluginGroup>& groups) {
- ListValue* list = new ListValue();
- for (std::vector<webkit::npapi::PluginGroup>::const_iterator it =
- groups.begin();
- it != groups.end(); ++it) {
- DictionaryValue* dict = new DictionaryValue();
- dict->SetString(keys::kIdKey, it->identifier());
- dict->SetString(keys::kDescriptionKey, it->GetGroupName());
- list->Append(dict);
- }
- result_.reset(list);
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE, base::Bind(
- &GetResourceIdentifiersFunction::SendResponse, this, true));
-}
-
-// static
-void GetResourceIdentifiersFunction::SetPluginGroupsForTesting(
- const std::vector<webkit::npapi::PluginGroup>* plugin_groups) {
- g_testing_plugin_groups_ = plugin_groups;
-}

Powered by Google App Engine
This is Rietveld 408576698