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; |
-} |