diff options
author | mkwst@chromium.org <mkwst@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-26 05:41:21 +0000 |
---|---|---|
committer | mkwst@chromium.org <mkwst@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-26 05:41:21 +0000 |
commit | fbc66010f8d955ca4f20ebe04e60c55b0f54292e (patch) | |
tree | 8d3b29318fbaf8fc3940a720c31a9b633d5c948e | |
parent | f116ba3eab9ef41ca39306a6608d027a6680a7af (diff) | |
download | chromium_src-fbc66010f8d955ca4f20ebe04e60c55b0f54292e.zip chromium_src-fbc66010f8d955ca4f20ebe04e60c55b0f54292e.tar.gz chromium_src-fbc66010f8d955ca4f20ebe04e60c55b0f54292e.tar.bz2 |
Expose privacy-relevant preferences in Chrome's extension APIs.
Adds a `privacy` permission to hold toggles for features that a) send information to external services (google or otherwise), b) send information to first-party websites, and c) effect Chrome's handling of the network in general.
(Metrics are still a TODO).
* privacy
* network
* networkPredictionEnabled (ChromeSetting)
* services
* alternateErrorPagesEnabled (ChromeSetting)
* autofillEnabled (ChromeSetting)
* instantEnabled (ChromeSetting)
* safeBrowsingEnabled (ChromeSetting)
* searchSuggestEnabled (ChromeSetting)
* translateEnabled (ChromeSetting)
* websites
* blockThirdPartyCookies (ChromeSetting)
* hyperlinkAuditingEnabled (ChromeSetting)
* referrersEnabled (ChromeSetting)
BUG=88030,55059,54853
TEST=browser_tests
Review URL: http://codereview.chromium.org/7298005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@98396 0039d316-1c4b-4281-b951-d872f2087c98
26 files changed, 1908 insertions, 510 deletions
diff --git a/chrome/browser/extensions/extension_content_settings_apitest.cc b/chrome/browser/extensions/extension_content_settings_apitest.cc index ee3b2cc..de370f3 100644 --- a/chrome/browser/extensions/extension_content_settings_apitest.cc +++ b/chrome/browser/extensions/extension_content_settings_apitest.cc @@ -17,18 +17,8 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ContentSettings) { CommandLine::ForCurrentProcess()->AppendSwitch( switches::kEnableExperimentalExtensionApis); - PrefService* pref_service = browser()->profile()->GetPrefs(); - pref_service->SetBoolean(prefs::kBlockThirdPartyCookies, true); - pref_service->SetBoolean(prefs::kEnableReferrers, false); - EXPECT_TRUE(RunExtensionTest("content_settings/standard")) << message_; - const PrefService::Preference* pref = pref_service->FindPreference( - prefs::kBlockThirdPartyCookies); - ASSERT_TRUE(pref); - EXPECT_TRUE(pref->IsExtensionControlled()); - EXPECT_FALSE(pref_service->GetBoolean(prefs::kBlockThirdPartyCookies)); - EXPECT_TRUE(pref_service->GetBoolean(prefs::kEnableReferrers)); HostContentSettingsMap* map = browser()->profile()->GetHostContentSettingsMap(); @@ -98,95 +88,6 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ContentSettings) { url, url, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, "")); } -IN_PROC_BROWSER_TEST_F(ExtensionApiTest, PersistentIncognitoContentSettings) { - CommandLine::ForCurrentProcess()->AppendSwitch( - switches::kEnableExperimentalExtensionApis); - - PrefService* prefs = browser()->profile()->GetPrefs(); - prefs->SetBoolean(prefs::kBlockThirdPartyCookies, false); - - EXPECT_TRUE( - RunExtensionTestIncognito("content_settings/persistent_incognito")) << - message_; - - // Setting an incognito preference should not create an incognito profile. - EXPECT_FALSE(browser()->profile()->HasOffTheRecordProfile()); - - PrefService* otr_prefs = - browser()->profile()->GetOffTheRecordProfile()->GetPrefs(); - const PrefService::Preference* pref = - otr_prefs->FindPreference(prefs::kBlockThirdPartyCookies); - ASSERT_TRUE(pref); - EXPECT_TRUE(pref->IsExtensionControlled()); - EXPECT_TRUE(otr_prefs->GetBoolean(prefs::kBlockThirdPartyCookies)); - - pref = prefs->FindPreference(prefs::kBlockThirdPartyCookies); - ASSERT_TRUE(pref); - EXPECT_FALSE(pref->IsExtensionControlled()); - EXPECT_FALSE(prefs->GetBoolean(prefs::kBlockThirdPartyCookies)); -} - -IN_PROC_BROWSER_TEST_F(ExtensionApiTest, IncognitoDisabledContentSettings) { - CommandLine::ForCurrentProcess()->AppendSwitch( - switches::kEnableExperimentalExtensionApis); - - EXPECT_FALSE(RunExtensionTest("content_settings/persistent_incognito")); -} - -IN_PROC_BROWSER_TEST_F(ExtensionApiTest, SessionOnlyIncognitoContentSettings) { - CommandLine::ForCurrentProcess()->AppendSwitch( - switches::kEnableExperimentalExtensionApis); - - PrefService* prefs = browser()->profile()->GetPrefs(); - prefs->SetBoolean(prefs::kBlockThirdPartyCookies, false); - - EXPECT_TRUE( - RunExtensionTestIncognito("content_settings/session_only_incognito")) << - message_; - - EXPECT_TRUE(browser()->profile()->HasOffTheRecordProfile()); - - PrefService* otr_prefs = - browser()->profile()->GetOffTheRecordProfile()->GetPrefs(); - const PrefService::Preference* pref = - otr_prefs->FindPreference(prefs::kBlockThirdPartyCookies); - ASSERT_TRUE(pref); - EXPECT_TRUE(pref->IsExtensionControlled()); - EXPECT_FALSE(otr_prefs->GetBoolean(prefs::kBlockThirdPartyCookies)); - - pref = prefs->FindPreference(prefs::kBlockThirdPartyCookies); - ASSERT_TRUE(pref); - EXPECT_FALSE(pref->IsExtensionControlled()); - EXPECT_FALSE(prefs->GetBoolean(prefs::kBlockThirdPartyCookies)); -} - -IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ContentSettingsClear) { - CommandLine::ForCurrentProcess()->AppendSwitch( - switches::kEnableExperimentalExtensionApis); - - PrefService* pref_service = browser()->profile()->GetPrefs(); - pref_service->SetBoolean(prefs::kBlockThirdPartyCookies, true); - - EXPECT_TRUE(RunExtensionTest("content_settings/clear")) << message_; - - const PrefService::Preference* pref = pref_service->FindPreference( - prefs::kBlockThirdPartyCookies); - ASSERT_TRUE(pref); - EXPECT_FALSE(pref->IsExtensionControlled()); - EXPECT_EQ(true, pref_service->GetBoolean(prefs::kBlockThirdPartyCookies)); -} - -IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ContentSettingsOnChange) { - CommandLine::ForCurrentProcess()->AppendSwitch( - switches::kEnableExperimentalExtensionApis); - - PrefService* prefs = browser()->profile()->GetPrefs(); - prefs->SetBoolean(prefs::kBlockThirdPartyCookies, false); - - EXPECT_TRUE(RunExtensionTestIncognito("content_settings/onchange")) << - message_; -} - IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ContentSettingsGetResourceIdentifiers) { CommandLine::ForCurrentProcess()->AppendSwitch( diff --git a/chrome/browser/extensions/extension_preference_api.cc b/chrome/browser/extensions/extension_preference_api.cc index b0ada5f..90adc09 100644 --- a/chrome/browser/extensions/extension_preference_api.cc +++ b/chrome/browser/extensions/extension_preference_api.cc @@ -45,22 +45,55 @@ const char kValue[] = "value"; const char kOnPrefChangeFormat[] = "types.ChromeSetting.%s.onChange"; PrefMappingEntry kPrefMapping[] = { - { "thirdPartyCookiesAllowed", - prefs::kBlockThirdPartyCookies, - ExtensionAPIPermission::kContentSettings + { "alternateErrorPagesEnabled", + prefs::kAlternateErrorPagesEnabled, + ExtensionAPIPermission::kExperimental }, - { "referrersEnabled", - prefs::kEnableReferrers, - ExtensionAPIPermission::kContentSettings + { "autofillEnabled", + prefs::kAutofillEnabled, + ExtensionAPIPermission::kExperimental }, { "hyperlinkAuditingEnabled", prefs::kEnableHyperlinkAuditing, - ExtensionAPIPermission::kContentSettings + ExtensionAPIPermission::kExperimental + }, + { "instantEnabled", + prefs::kInstantEnabled, + ExtensionAPIPermission::kExperimental + }, + // TODO(mkwst): come back to this once the UMA discussion has been resolved. + // { "metricsReportingEnabled", + // prefs::kMetricsReportingEnabled, + // ExtensionAPIPermission::kMetrics + // }, + { "networkPredictionEnabled", + prefs::kNetworkPredictionEnabled, + ExtensionAPIPermission::kExperimental }, { "proxy", prefs::kProxy, ExtensionAPIPermission::kProxy }, + { "referrersEnabled", + prefs::kEnableReferrers, + ExtensionAPIPermission::kExperimental + }, + { "searchSuggestEnabled", + prefs::kSearchSuggestEnabled, + ExtensionAPIPermission::kExperimental + }, + { "safeBrowsingEnabled", + prefs::kSafeBrowsingEnabled, + ExtensionAPIPermission::kExperimental + }, + { "thirdPartyCookiesAllowed", + prefs::kBlockThirdPartyCookies, + ExtensionAPIPermission::kExperimental + }, + { "translationServiceEnabled", + prefs::kEnableTranslate, + ExtensionAPIPermission::kExperimental + } }; class IdentityPrefTransformer : public PrefTransformerInterface { diff --git a/chrome/browser/extensions/extension_preference_apitest.cc b/chrome/browser/extensions/extension_preference_apitest.cc new file mode 100644 index 0000000..642cd7b --- /dev/null +++ b/chrome/browser/extensions/extension_preference_apitest.cc @@ -0,0 +1,135 @@ +// Copyright (c) 2011 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 "base/utf_string_conversions.h" +#include "chrome/browser/extensions/extension_apitest.h" +#include "chrome/browser/prefs/pref_service.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/browser.h" +#include "chrome/common/chrome_switches.h" +#include "chrome/common/pref_names.h" +#include "webkit/plugins/npapi/mock_plugin_list.h" + +IN_PROC_BROWSER_TEST_F(ExtensionApiTest, PreferenceApi) { + CommandLine::ForCurrentProcess()->AppendSwitch( + switches::kEnableExperimentalExtensionApis); + + PrefService* pref_service = browser()->profile()->GetPrefs(); + pref_service->SetBoolean(prefs::kAlternateErrorPagesEnabled, false); + pref_service->SetBoolean(prefs::kAutofillEnabled, false); + pref_service->SetBoolean(prefs::kBlockThirdPartyCookies, true); + pref_service->SetBoolean(prefs::kEnableHyperlinkAuditing, false); + pref_service->SetBoolean(prefs::kEnableReferrers, false); + pref_service->SetBoolean(prefs::kEnableTranslate, false); + pref_service->SetBoolean(prefs::kInstantEnabled, false); + pref_service->SetBoolean(prefs::kNetworkPredictionEnabled, false); + pref_service->SetBoolean(prefs::kSafeBrowsingEnabled, false); + pref_service->SetBoolean(prefs::kSearchSuggestEnabled, false); + + EXPECT_TRUE(RunExtensionTest("preference/standard")) << message_; + + const PrefService::Preference* pref = pref_service->FindPreference( + prefs::kBlockThirdPartyCookies); + ASSERT_TRUE(pref); + EXPECT_TRUE(pref->IsExtensionControlled()); + EXPECT_TRUE(pref_service->GetBoolean(prefs::kAlternateErrorPagesEnabled)); + EXPECT_TRUE(pref_service->GetBoolean(prefs::kAutofillEnabled)); + EXPECT_FALSE(pref_service->GetBoolean(prefs::kBlockThirdPartyCookies)); + EXPECT_TRUE(pref_service->GetBoolean(prefs::kEnableHyperlinkAuditing)); + EXPECT_TRUE(pref_service->GetBoolean(prefs::kEnableReferrers)); + EXPECT_TRUE(pref_service->GetBoolean(prefs::kEnableTranslate)); + EXPECT_TRUE(pref_service->GetBoolean(prefs::kInstantEnabled)); + EXPECT_TRUE(pref_service->GetBoolean(prefs::kNetworkPredictionEnabled)); + EXPECT_TRUE(pref_service->GetBoolean(prefs::kSafeBrowsingEnabled)); + EXPECT_TRUE(pref_service->GetBoolean(prefs::kSearchSuggestEnabled)); +} + +IN_PROC_BROWSER_TEST_F(ExtensionApiTest, PreferencePersistentIncognito) { + CommandLine::ForCurrentProcess()->AppendSwitch( + switches::kEnableExperimentalExtensionApis); + + PrefService* prefs = browser()->profile()->GetPrefs(); + prefs->SetBoolean(prefs::kBlockThirdPartyCookies, false); + + EXPECT_TRUE( + RunExtensionTestIncognito("preference/persistent_incognito")) << + message_; + + // Setting an incognito preference should not create an incognito profile. + EXPECT_FALSE(browser()->profile()->HasOffTheRecordProfile()); + + PrefService* otr_prefs = + browser()->profile()->GetOffTheRecordProfile()->GetPrefs(); + const PrefService::Preference* pref = + otr_prefs->FindPreference(prefs::kBlockThirdPartyCookies); + ASSERT_TRUE(pref); + EXPECT_TRUE(pref->IsExtensionControlled()); + EXPECT_TRUE(otr_prefs->GetBoolean(prefs::kBlockThirdPartyCookies)); + + pref = prefs->FindPreference(prefs::kBlockThirdPartyCookies); + ASSERT_TRUE(pref); + EXPECT_FALSE(pref->IsExtensionControlled()); + EXPECT_FALSE(prefs->GetBoolean(prefs::kBlockThirdPartyCookies)); +} + +IN_PROC_BROWSER_TEST_F(ExtensionApiTest, PreferenceIncognitoDisabled) { + CommandLine::ForCurrentProcess()->AppendSwitch( + switches::kEnableExperimentalExtensionApis); + + EXPECT_FALSE(RunExtensionTest("preference/persistent_incognito")); +} + +IN_PROC_BROWSER_TEST_F(ExtensionApiTest, PreferenceSessionOnlyIncognito) { + CommandLine::ForCurrentProcess()->AppendSwitch( + switches::kEnableExperimentalExtensionApis); + + PrefService* prefs = browser()->profile()->GetPrefs(); + prefs->SetBoolean(prefs::kBlockThirdPartyCookies, false); + + EXPECT_TRUE( + RunExtensionTestIncognito("preference/session_only_incognito")) << + message_; + + EXPECT_TRUE(browser()->profile()->HasOffTheRecordProfile()); + + PrefService* otr_prefs = + browser()->profile()->GetOffTheRecordProfile()->GetPrefs(); + const PrefService::Preference* pref = + otr_prefs->FindPreference(prefs::kBlockThirdPartyCookies); + ASSERT_TRUE(pref); + EXPECT_TRUE(pref->IsExtensionControlled()); + EXPECT_FALSE(otr_prefs->GetBoolean(prefs::kBlockThirdPartyCookies)); + + pref = prefs->FindPreference(prefs::kBlockThirdPartyCookies); + ASSERT_TRUE(pref); + EXPECT_FALSE(pref->IsExtensionControlled()); + EXPECT_FALSE(prefs->GetBoolean(prefs::kBlockThirdPartyCookies)); +} + +IN_PROC_BROWSER_TEST_F(ExtensionApiTest, PreferenceClear) { + CommandLine::ForCurrentProcess()->AppendSwitch( + switches::kEnableExperimentalExtensionApis); + + PrefService* pref_service = browser()->profile()->GetPrefs(); + pref_service->SetBoolean(prefs::kBlockThirdPartyCookies, true); + + EXPECT_TRUE(RunExtensionTest("preference/clear")) << message_; + + const PrefService::Preference* pref = pref_service->FindPreference( + prefs::kBlockThirdPartyCookies); + ASSERT_TRUE(pref); + EXPECT_FALSE(pref->IsExtensionControlled()); + EXPECT_EQ(true, pref_service->GetBoolean(prefs::kBlockThirdPartyCookies)); +} + +IN_PROC_BROWSER_TEST_F(ExtensionApiTest, PreferenceOnChange) { + CommandLine::ForCurrentProcess()->AppendSwitch( + switches::kEnableExperimentalExtensionApis); + + PrefService* prefs = browser()->profile()->GetPrefs(); + prefs->SetBoolean(prefs::kBlockThirdPartyCookies, false); + + EXPECT_TRUE(RunExtensionTestIncognito("preference/onchange")) << + message_; +} diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index d045205..8c880ea 100644 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -2496,6 +2496,7 @@ 'browser/extensions/extension_nacl_browsertest.cc', 'browser/extensions/extension_omnibox_apitest.cc', 'browser/extensions/extension_override_apitest.cc', + 'browser/extensions/extension_preference_apitest.cc', 'browser/extensions/extension_processes_apitest.cc', 'browser/extensions/extension_proxy_apitest.cc', 'browser/extensions/extension_resource_request_policy_apitest.cc', diff --git a/chrome/common/extensions/api/extension_api.json b/chrome/common/extensions/api/extension_api.json index f948a0c..f571d61 100644 --- a/chrome/common/extensions/api/extension_api.json +++ b/chrome/common/extensions/api/extension_api.json @@ -7711,27 +7711,6 @@ } ], "properties": { - "global": { - "type": "object", - "value": {}, - "properties": { - "thirdPartyCookiesAllowed": { - "$ref": "ChromeSetting", - "value": ["thirdPartyCookiesAllowed", {"type": "boolean"}], - "description": "Whether third party cookies should be allowed. The value of this preference is of type boolean, and the default value is true." - }, - "referrersEnabled": { - "$ref": "ChromeSetting", - "value": ["referrersEnabled", {"type":"boolean"}], - "description": "Whether referrers should be enabled. The value of this preference is of type boolean, and the default value is true." - }, - "hyperlinkAuditingEnabled": { - "$ref": "ChromeSetting", - "value": ["hyperlinkAuditingEnabled", {"type":"boolean"}], - "description": "Whether to enable hyperlink auditing (\"<a ping>\"). The value of this preference is of type boolean, and the default value is true." - } - } - }, "cookies": { "$ref": "ContentSetting", "description": "Whether to allow cookies and other local data to be set by websites. One of<br><var>allow</var>: Accept cookies,<br><var>block</var>: Block cookies,<br><var>session_only</var>: Accept cookies only for the current session. Default is <var>allow</var>.<br>The primary URL is the URL representing the cookie origin. The secondary URL is the URL of the top-level frame.", @@ -7783,6 +7762,87 @@ } }, { + "namespace": "experimental.privacy", + "properties": { + "network": { + "type": "object", + "value": {}, + "description": "Settings that influence Chrome's handling of network connections in general.", + "properties": { + "networkPredictionEnabled": { + "$ref": "ChromeSetting", + "value": ["networkPredictionEnabled", {"type":"boolean"}], + "description": "If enabled, Chrome attempts to speed up your web browsing experience by pre-resolving DNS entries, prerendering sites (<code><link rel='prefetch' ...></code>), and preemptively opening TCP and SSL connections to servers. This preference's value is a boolean, defaulting to <code>true</code>." + } + } + }, + "services": { + "type": "object", + "value": {}, + "description": "Settings that enable or disable features that require third-party network services provided by Google and your default search provider.", + "properties": { + "alternateErrorPagesEnabled": { + "$ref": "ChromeSetting", + "value": ["alternateErrorPagesEnabled", {"type":"boolean"}], + "description": "If enabled, Chrome uses a web service to help resolve navigation errors. This preference's value is a boolean, defaulting to <code>true</code>." + }, + "autofillEnabled": { + "$ref": "ChromeSetting", + "value": ["autofillEnabled", {"type":"boolean"}], + "description": "If enabled, Chrome offers to automatically fill in forms. This preference's value is a boolean, defaulting to <code>true</code>." + }, + "instantEnabled": { + "$ref": "ChromeSetting", + "value": ["instantEnabled", {"type":"boolean"}], + "description": "If enabled, Chrome automatically performs and displays search requests for text you type into the Omnibox as you type it. This preference's value is a boolean, defaulting to <code>true</code>." + }, + "metricsReportingEnabled": { + "$ref": "ChromeSetting", + "value": ["metricsReportingEnabled", {"type":"boolean"}], + "description": "If enabled, Chrome automatically sends usage statistics and crash reports to Google. This preference's value is a boolean, defaulting to <code>false</code>." + }, + "safeBrowsingEnabled": { + "$ref": "ChromeSetting", + "value": ["safeBrowsingEnabled", {"type":"boolean"}], + "description": "If enabled, Chrome does its best to protect you from phishing and malware. This preference's value is a boolean, defaulting to <code>true</code>." + }, + "searchSuggestEnabled": { + "$ref": "ChromeSetting", + "value": ["searchSuggestEnabled", {"type":"boolean"}], + "description": "If enabled, Chrome sends the text you type into the Omnibox to your default search engine, which provides predictions of websites and searches that are likely completions of what you've typed so far. This preference's value is a boolean, defaulting to <code>true</code>." + }, + "translationServiceEnabled": { + "$ref": "ChromeSetting", + "value": ["translationServiceEnabled", {"type":"boolean"}], + "description": "If enabled, Chrome offers to translate pages that aren't in a language you read. This preference's value is a boolean, defaulting to <code>true</code>." + } + } + }, + "websites": { + "type": "object", + "value": {}, + "description": "Settings that determine what information Chrome sends when requesting websites.", + "properties": { + "thirdPartyCookiesAllowed": { + "$ref": "ChromeSetting", + "value": ["thirdPartyCookiesAllowed", {"type": "boolean"}], + "description": "If disabled, Chrome blocks third-party sites from setting cookies. The value of this preference is of type boolean, and the default value is <code>true</code>." + }, + "hyperlinkAuditingEnabled": { + "$ref": "ChromeSetting", + "value": ["hyperlinkAuditingEnabled", {"type":"boolean"}], + "description": "If enabled, Chrome sends auditing pings when requested by a website (<code><a ping></code>). The value of this preference is of type boolean, and the default value is <code>true</code>." + }, + "referrersEnabled": { + "$ref": "ChromeSetting", + "value": ["referrersEnabled", {"type":"boolean"}], + "description": "If enabled, Chrome sends <code>referer</code> headers with your requests. Yes, the name of this preference doesn't match the misspelled header. No, we're not going to change it. The value of this preference is of type boolean, and the default value is <code>true</code>." + } + } + } + } + }, + { "namespace": "experimental.debugger", "functions": [ { diff --git a/chrome/common/extensions/docs/experimental.contentSettings.html b/chrome/common/extensions/docs/experimental.contentSettings.html index c461f11..53d5d82 100644 --- a/chrome/common/extensions/docs/experimental.contentSettings.html +++ b/chrome/common/extensions/docs/experimental.contentSettings.html @@ -272,8 +272,6 @@ <a href="#properties">Properties</a> <ol> <li> - <a href="#property-global">global</a> - </li><li> <a href="#property-cookies">cookies</a> </li><li> <a href="#property-images">images</a> @@ -339,283 +337,6 @@ <h3 id="properties">Properties</h3> <div> - <a name="property-global"></a> - <h4>global</h4> - <div class="summary"> - <!-- Note: intentionally longer 80 columns --> - <span>chrome.experimental.contentSettings.</span><span>global</span> - </div> - <div> - <dt> - <var>global</var> - <em> - - <!-- TYPE --> - <div style="display:inline"> - ( - <span class="optional" style="display: none; ">optional</span> - <span class="enum" style="display: none; ">enumerated</span> - <span id="typeTemplate"> - <span style="display: none; "> - <a> Type</a> - </span> - <span> - <span style="display: none; "> - array of <span><span></span></span> - </span> - <span>object</span> - <span style="display: none; "></span> - </span> - </span> - ) - </div> - - </em> - </dt> - <dd class="todo"> - Undocumented. - </dd> - <dd style="display: none; "> - Description of this parameter from the json schema. - </dd> - <dd style="display: none; "> - This parameter was added in version - <b><span></span></b>. - You must omit this parameter in earlier versions, - and you may omit it in any version. If you require this - parameter, the manifest key - <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> - can ensure that your extension won't be run in an earlier browser version. - </dd> - - <!-- OBJECT PROPERTIES --> - <dd> - <dl> - <div> - <div> - <dt> - <var>thirdPartyCookiesAllowed</var> - <em> - - <!-- TYPE --> - <div style="display:inline"> - ( - <span class="optional" style="display: none; ">optional</span> - <span class="enum" style="display: none; ">enumerated</span> - <span id="typeTemplate"> - <span> - <a href="types.html#type-ChromeSetting">ChromeSetting</a> - </span> - <span style="display: none; "> - <span> - array of <span><span></span></span> - </span> - <span>paramType</span> - <span></span> - </span> - </span> - ) - </div> - - </em> - </dt> - <dd class="todo" style="display: none; "> - Undocumented. - </dd> - <dd>Whether third party cookies should be allowed. The value of this preference is of type boolean, and the default value is true.</dd> - <dd style="display: none; "> - This parameter was added in version - <b><span></span></b>. - You must omit this parameter in earlier versions, - and you may omit it in any version. If you require this - parameter, the manifest key - <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> - can ensure that your extension won't be run in an earlier browser version. - </dd> - - <!-- OBJECT PROPERTIES --> - <dd style="display: none; "> - <dl> - <div> - <div> - </div> - </div> - </dl> - </dd> - - <!-- OBJECT METHODS --> - <dd style="display: none; "> - <div></div> - </dd> - - <!-- OBJECT EVENT FIELDS --> - <dd style="display: none; "> - <div></div> - </dd> - - <!-- FUNCTION PARAMETERS --> - <dd style="display: none; "> - <div></div> - </dd> - - </div> - </div><div> - <div> - <dt> - <var>referrersEnabled</var> - <em> - - <!-- TYPE --> - <div style="display:inline"> - ( - <span class="optional" style="display: none; ">optional</span> - <span class="enum" style="display: none; ">enumerated</span> - <span id="typeTemplate"> - <span> - <a href="types.html#type-ChromeSetting">ChromeSetting</a> - </span> - <span style="display: none; "> - <span> - array of <span><span></span></span> - </span> - <span>paramType</span> - <span></span> - </span> - </span> - ) - </div> - - </em> - </dt> - <dd class="todo" style="display: none; "> - Undocumented. - </dd> - <dd>Whether referrers should be enabled. The value of this preference is of type boolean, and the default value is true.</dd> - <dd style="display: none; "> - This parameter was added in version - <b><span></span></b>. - You must omit this parameter in earlier versions, - and you may omit it in any version. If you require this - parameter, the manifest key - <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> - can ensure that your extension won't be run in an earlier browser version. - </dd> - - <!-- OBJECT PROPERTIES --> - <dd style="display: none; "> - <dl> - <div> - <div> - </div> - </div> - </dl> - </dd> - - <!-- OBJECT METHODS --> - <dd style="display: none; "> - <div></div> - </dd> - - <!-- OBJECT EVENT FIELDS --> - <dd style="display: none; "> - <div></div> - </dd> - - <!-- FUNCTION PARAMETERS --> - <dd style="display: none; "> - <div></div> - </dd> - - </div> - </div><div> - <div> - <dt> - <var>hyperlinkAuditingEnabled</var> - <em> - - <!-- TYPE --> - <div style="display:inline"> - ( - <span class="optional" style="display: none; ">optional</span> - <span class="enum" style="display: none; ">enumerated</span> - <span id="typeTemplate"> - <span> - <a href="types.html#type-ChromeSetting">ChromeSetting</a> - </span> - <span style="display: none; "> - <span> - array of <span><span></span></span> - </span> - <span>paramType</span> - <span></span> - </span> - </span> - ) - </div> - - </em> - </dt> - <dd class="todo" style="display: none; "> - Undocumented. - </dd> - <dd>Whether to enable hyperlink auditing ("<a ping>"). The value of this preference is of type boolean, and the default value is true.</dd> - <dd style="display: none; "> - This parameter was added in version - <b><span></span></b>. - You must omit this parameter in earlier versions, - and you may omit it in any version. If you require this - parameter, the manifest key - <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> - can ensure that your extension won't be run in an earlier browser version. - </dd> - - <!-- OBJECT PROPERTIES --> - <dd style="display: none; "> - <dl> - <div> - <div> - </div> - </div> - </dl> - </dd> - - <!-- OBJECT METHODS --> - <dd style="display: none; "> - <div></div> - </dd> - - <!-- OBJECT EVENT FIELDS --> - <dd style="display: none; "> - <div></div> - </dd> - - <!-- FUNCTION PARAMETERS --> - <dd style="display: none; "> - <div></div> - </dd> - - </div> - </div> - </dl> - </dd> - - <!-- OBJECT METHODS --> - <dd style="display: none; "> - <div></div> - </dd> - - <!-- OBJECT EVENT FIELDS --> - <dd style="display: none; "> - <div></div> - </dd> - - <!-- FUNCTION PARAMETERS --> - <dd style="display: none; "> - <div></div> - </dd> - - </div> - </div><div> <a name="property-cookies"></a> <h4>cookies</h4> <div class="summary"> diff --git a/chrome/common/extensions/docs/experimental.html b/chrome/common/extensions/docs/experimental.html index 98e9e3a..6179ff2 100644 --- a/chrome/common/extensions/docs/experimental.html +++ b/chrome/common/extensions/docs/experimental.html @@ -369,6 +369,7 @@ on the following experimental APIs: <a href="experimental.devtools.resources.html">experimental.devtools.resources</a></li><li> <a href="experimental.infobars.html">experimental.infobars</a></li><li> <a href="experimental.permissions.html">experimental.permissions</a></li><li> + <a href="experimental.privacy.html">experimental.privacy</a></li><li> <a href="experimental.settings.html">experimental.settings</a></li><li> <a href="experimental.webNavigation.html">experimental.webNavigation</a></li><li> <a href="experimental.webRequest.html">experimental.webRequest</a></li> diff --git a/chrome/common/extensions/docs/experimental.privacy.html b/chrome/common/extensions/docs/experimental.privacy.html new file mode 100644 index 0000000..11e9610 --- /dev/null +++ b/chrome/common/extensions/docs/experimental.privacy.html @@ -0,0 +1,1485 @@ +<!DOCTYPE html><!-- This page is a placeholder for generated extensions api doc. Note: + 1) The <head> information in this page is significant, should be uniform + across api docs and should be edited only with knowledge of the + templating mechanism. + 3) All <body>.innerHTML is genereated as an rendering step. If viewed in a + browser, it will be re-generated from the template, json schema and + authored overview content. + 4) The <body>.innerHTML is also generated by an offline step so that this + page may easily be indexed by search engines. +--><html xmlns="http://www.w3.org/1999/xhtml"><head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <link href="css/ApiRefStyles.css" rel="stylesheet" type="text/css"> + <link href="css/print.css" rel="stylesheet" type="text/css" media="print"> + <script type="text/javascript" src="../../../third_party/jstemplate/jstemplate_compiled.js"> + </script> + <script type="text/javascript" src="js/api_page_generator.js"></script> + <script type="text/javascript" src="js/bootstrap.js"></script> + <script type="text/javascript" src="js/sidebar.js"></script> + <title>chrome.experimental.privacy - Google Chrome Extensions - Google Code</title></head> + <body> <div id="gc-container" class="labs"> + <div id="devModeWarning"> + You are viewing extension docs in chrome via the 'file:' scheme: are you expecting to see local changes when you refresh? You'll need run chrome with --allow-file-access-from-files. + </div> + <!-- SUBTEMPLATES: DO NOT MOVE FROM THIS LOCATION --> + <!-- In particular, sub-templates that recurse, must be used by allowing + jstemplate to make a copy of the template in this section which + are not operated on by way of the jsskip="true" --> + <div style="display:none"> + + <!-- VALUE --> + <div id="valueTemplate"> + <dt> + <var>paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum">enumerated</span> + <span id="typeTemplate"> + <span> + <a> Type</a> + </span> + <span> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd> + Description of this parameter from the json schema. + </dd> + <dd> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd> + <div></div> + </dd> + + </div> <!-- /VALUE --> + + <div id="functionParametersTemplate"> + <h5>Parameters</h5> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> <!-- /SUBTEMPLATES --> + + <a id="top"></a> + <div id="skipto"> + <a href="#gc-pagecontent">Skip to page content</a> + <a href="#gc-toc">Skip to main navigation</a> + </div> + <!-- API HEADER --> + <table id="header" width="100%" cellspacing="0" border="0"> + <tbody><tr> + <td valign="middle"><a href="http://code.google.com/"><img src="images/code_labs_logo.gif" height="43" width="161" alt="Google Code Labs" style="border:0; margin:0;"></a></td> + <td valign="middle" width="100%" style="padding-left:0.6em;"> + <form action="http://www.google.com/cse" id="cse" style="margin-top:0.5em"> + <div id="gsc-search-box"> + <input type="hidden" name="cx" value="002967670403910741006:61_cvzfqtno"> + <input type="hidden" name="ie" value="UTF-8"> + <input type="text" name="q" value="" size="55"> + <input class="gsc-search-button" type="submit" name="sa" value="Search"> + <br> + <span class="greytext">e.g. "page action" or "tabs"</span> + </div> + </form> + + <script type="text/javascript" src="http://www.google.com/jsapi"></script> + <script type="text/javascript">google.load("elements", "1", {packages: "transliteration"});</script> + <script type="text/javascript" src="http://www.google.com/coop/cse/t13n?form=cse&t13n_langs=en"></script> + <script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse&lang=en"></script> + </td> + </tr> + </tbody></table> + + <div id="codesiteContent" class=""> + + <a id="gc-topnav-anchor"></a> + <div id="gc-topnav"> + <h1>Google Chrome Extensions (<a href="http://code.google.com/labs/">Labs</a>)</h1> + <ul id="home" class="gc-topnav-tabs"> + <li id="home_link"> + <a href="index.html" title="Google Chrome Extensions home page">Home</a> + </li> + <li id="docs_link"> + <a href="docs.html" title="Official Google Chrome Extensions documentation">Docs</a> + </li> + <li id="faq_link"> + <a href="faq.html" title="Answers to frequently asked questions about Google Chrome Extensions">FAQ</a> + </li> + <li id="samples_link"> + <a href="samples.html" title="Sample extensions (with source code)">Samples</a> + </li> + <li id="group_link"> + <a href="http://groups.google.com/a/chromium.org/group/chromium-extensions" title="Google Chrome Extensions developer forum">Group</a> + </li> + </ul> + </div> <!-- end gc-topnav --> + + <div class="g-section g-tpl-170"> + <!-- SIDENAV --> + <div class="g-unit g-first" id="gc-toc"> + <ul> + <li><a href="getstarted.html">Getting Started</a></li> + <li><a href="overview.html">Overview</a></li> + <li><a href="whats_new.html">What's New?</a></li> + <li><h2><a href="devguide.html">Developer's Guide</a></h2> + <ul> + <li>Browser UI + <ul> + <li><a href="browserAction.html">Browser Actions</a></li> + <li><a href="contextMenus.html">Context Menus</a></li> + <li><a href="notifications.html">Desktop Notifications</a></li> + <li><a href="omnibox.html">Omnibox</a></li> + <li><a href="options.html">Options Pages</a></li> + <li><a href="override.html">Override Pages</a></li> + <li><a href="pageAction.html">Page Actions</a></li> + </ul> + </li> + <li>Browser Interaction + <ul> + <li><a href="bookmarks.html">Bookmarks</a></li> + <li><a href="cookies.html">Cookies</a></li> + <li><a href="events.html">Events</a></li> + <li><a href="history.html">History</a></li> + <li><a href="management.html">Management</a></li> + <li><a href="tabs.html">Tabs</a></li> + <li><a href="windows.html">Windows</a></li> + </ul> + </li> + <li>Implementation + <ul> + <li><a href="a11y.html">Accessibility</a></li> + <li><a href="background_pages.html">Background Pages</a></li> + <li><a href="content_scripts.html">Content Scripts</a></li> + <li><a href="xhr.html">Cross-Origin XHR</a></li> + <li><a href="idle.html">Idle</a></li> + <li><a href="i18n.html">Internationalization</a></li> + <li><a href="messaging.html">Message Passing</a></li> + <li><a href="npapi.html">NPAPI Plugins</a></li> + </ul> + </li> + <li>Finishing + <ul> + <li><a href="hosting.html">Hosting</a></li> + <li><a href="external_extensions.html">Other Deployment Options</a></li> + </ul> + </li> + </ul> + </li> + <li><h2><a href="apps.html">Packaged Apps</a></h2></li> + <li><h2><a href="tutorials.html">Tutorials</a></h2> + <ul> + <li><a href="tut_debugging.html">Debugging</a></li> + <li><a href="tut_analytics.html">Google Analytics</a></li> + <li><a href="tut_oauth.html">OAuth</a></li> + </ul> + </li> + <li><h2>Reference</h2> + <ul> + <li>Formats + <ul> + <li><a href="manifest.html">Manifest Files</a></li> + <li><a href="match_patterns.html">Match Patterns</a></li> + </ul> + </li> + <li><a href="permission_warnings.html">Permission Warnings</a></li> + <li><a href="api_index.html">chrome.* APIs</a></li> + <li><a href="api_other.html">Other APIs</a></li> + </ul> + </li> + <li><h2><a href="samples.html">Samples</a></h2></li> + <div class="line"> </div> + <li><h2>More</h2> + <ul> + <li><a href="http://code.google.com/chrome/webstore/docs/index.html">Chrome Web Store</a></li> + <li><a href="http://code.google.com/chrome/apps/docs/developers_guide.html">Hosted Apps</a></li> + <li><a href="themes.html">Themes</a></li> + </ul> + </li> + </ul> + </div> + <script> + initToggles(); + </script> + + <div class="g-unit" id="gc-pagecontent"> + <div id="pageTitle"> + <h1 class="page_title">chrome.experimental.privacy</h1> + </div> + <!-- TABLE OF CONTENTS --> + <div id="toc"> + <h2>Contents</h2> + <ol> + <li style="display: none; "> + <a>h2Name</a> + <ol> + <li> + <a>h3Name</a> + </li> + </ol> + </li> + <li> + <a href="#apiReference">API reference: chrome.experimental.privacy</a> + <ol> + <li> + <a href="#properties">Properties</a> + <ol> + <li> + <a href="#property-network">network</a> + </li><li> + <a href="#property-services">services</a> + </li><li> + <a href="#property-websites">websites</a> + </li> + </ol> + </li> + <li style="display: none; "> + <a>Methods</a> + <ol> + <li> + <a href="#method-anchor">methodName</a> + </li> + </ol> + </li> + <li style="display: none; "> + <a>Events</a> + <ol> + <li> + <a href="#event-anchor">eventName</a> + </li> + </ol> + </li> + <li style="display: none; "> + <a href="#types">Types</a> + <ol> + <li> + <a href="#id-anchor">id</a> + </li> + </ol> + </li> + </ol> + </li> + </ol> + </div> + <!-- /TABLE OF CONTENTS --> + + <!-- Standard content lead-in for experimental API pages --> + <p id="classSummary"> + For information on how to use experimental APIs, see the <a href="experimental.html">chrome.experimental.* APIs</a> page. + </p> + + <!-- STATIC CONTENT PLACEHOLDER --> + <div id="static"></div> + + <!-- API PAGE --> + <div class="apiPage"> + <a name="apiReference"></a> + <h2>API reference: chrome.experimental.privacy</h2> + + <!-- PROPERTIES --> + <div class="apiGroup"> + <a name="properties"></a> + <h3 id="properties">Properties</h3> + + <div> + <a name="property-network"></a> + <h4>network</h4> + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span>chrome.experimental.privacy.</span><span>network</span> + </div> + <div> + <dt> + <var>network</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>object</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Settings that influence Chrome's handling of network connections in general.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd> + <dl> + <div> + <div> + <dt> + <var>networkPredictionEnabled</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="types.html#type-ChromeSetting">ChromeSetting</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>If enabled, Chrome attempts to speed up your web browsing experience by pre-resolving DNS entries, prerendering sites (<code><link rel='prefetch' ...></code>), and preemptively opening TCP and SSL connections to servers. This preference's value is a boolean, defaulting to <code>true</code>.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <a name="property-services"></a> + <h4>services</h4> + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span>chrome.experimental.privacy.</span><span>services</span> + </div> + <div> + <dt> + <var>services</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>object</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Settings that enable or disable features that require third-party network services provided by Google and your default search provider.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd> + <dl> + <div> + <div> + <dt> + <var>alternateErrorPagesEnabled</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="types.html#type-ChromeSetting">ChromeSetting</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>If enabled, Chrome uses a web service to help resolve navigation errors. This preference's value is a boolean, defaulting to <code>true</code>.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>autofillEnabled</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="types.html#type-ChromeSetting">ChromeSetting</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>If enabled, Chrome offers to automatically fill in forms. This preference's value is a boolean, defaulting to <code>true</code>.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>instantEnabled</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="types.html#type-ChromeSetting">ChromeSetting</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>If enabled, Chrome automatically performs and displays search requests for text you type into the Omnibox as you type it. This preference's value is a boolean, defaulting to <code>true</code>.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>metricsReportingEnabled</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="types.html#type-ChromeSetting">ChromeSetting</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>If enabled, Chrome automatically sends usage statistics and crash reports to Google. This preference's value is a boolean, defaulting to <code>false</code>.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>safeBrowsingEnabled</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="types.html#type-ChromeSetting">ChromeSetting</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>If enabled, Chrome does its best to protect you from phishing and malware. This preference's value is a boolean, defaulting to <code>true</code>.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>searchSuggestEnabled</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="types.html#type-ChromeSetting">ChromeSetting</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>If enabled, Chrome sends the text you type into the Omnibox to your default search engine, which provides predictions of websites and searches that are likely completions of what you've typed so far. This preference's value is a boolean, defaulting to <code>true</code>.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>translationServiceEnabled</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="types.html#type-ChromeSetting">ChromeSetting</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>If enabled, Chrome offers to translate pages that aren't in a language you read. This preference's value is a boolean, defaulting to <code>true</code>.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <a name="property-websites"></a> + <h4>websites</h4> + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span>chrome.experimental.privacy.</span><span>websites</span> + </div> + <div> + <dt> + <var>websites</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>object</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Settings that determine what information Chrome sends when requesting websites.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd> + <dl> + <div> + <div> + <dt> + <var>thirdPartyCookiesAllowed</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="types.html#type-ChromeSetting">ChromeSetting</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>If disabled, Chrome blocks third-party sites from setting cookies. The value of this preference is of type boolean, and the default value is <code>true</code>.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>hyperlinkAuditingEnabled</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="types.html#type-ChromeSetting">ChromeSetting</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>If enabled, Chrome sends auditing pings when requested by a website (<code><a ping></code>). The value of this preference is of type boolean, and the default value is <code>true</code>.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>referrersEnabled</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="types.html#type-ChromeSetting">ChromeSetting</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>If enabled, Chrome sends <code>referer</code> headers with your requests. Yes, the name of this preference doesn't match the misspelled header. No, we're not going to change it. The value of this preference is of type boolean, and the default value is <code>true</code>.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + + </div> <!-- /apiGroup --> + + <!-- METHODS --> + <div id="methodsTemplate" class="apiGroup" style="display: none; "> + <a></a> + <h3>Methods</h3> + + <!-- iterates over all functions --> + <div class="apiItem"> + <a></a> <!-- method-anchor --> + <h4>method name</h4> + + <div class="summary"><span>void</span> + <!-- Note: intentionally longer 80 columns --> + <span>chrome.module.methodName</span>(<span><span>, </span><span></span> + <var><span></span></var></span>)</div> + + <div class="description"> + <p class="todo">Undocumented.</p> + <p> + A description from the json schema def of the function goes here. + </p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4>Returns</h4> + <dl> + <div> + <div> + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div> <!-- /apiItem --> + + </div> <!-- /apiGroup --> + + <!-- EVENTS --> + <div id="eventsTemplate" class="apiGroup" style="display: none; "> + <a></a> + <h3>Events</h3> + <!-- iterates over all events --> + <div class="apiItem"> + <a></a> + <h4>event name</h4> + + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span class="subdued">chrome.bookmarks</span><span>onEvent</span><span class="subdued">.addListener</span>(function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span><span>, Type opt_param1, Type opt_param2</span>); + </div> + + <div class="description"> + <p class="todo">Undocumented.</p> + <p> + A description from the json schema def of the event goes here. + </p> + + <!-- LISTENER PARAMETERS --> + <div> + <h4>Listener parameters</h4> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + + <!-- EXTRA PARAMETERS --> + <div> + <h4>Extra parameters to addListener</h4> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + + <!-- LISTENER RETURN VALUE --> + <h4>Listener returns</h4> + <dl> + <div> + <div> + </div> + </div> + </dl> + + </div> <!-- /description --> + </div> <!-- /apiItem --> + + </div> <!-- /apiGroup --> + + <!-- TYPES --> + <div class="apiGroup" style="display: none; "> + <a name="types"></a> + <h3 id="types">Types</h3> + + <!-- iterates over all types --> + <div class="apiItem"> + <a></a> + <h4>type name</h4> + + <div> + </div> + + </div> <!-- /apiItem --> + + </div> <!-- /apiGroup --> + + </div> <!-- /apiPage --> + </div> <!-- /gc-pagecontent --> + </div> <!-- /g-section --> + </div> <!-- /codesiteContent --> + <div id="gc-footer" --=""> + <div class="text"> + <p> + Except as otherwise <a href="http://code.google.com/policies.html#restrictions">noted</a>, + the content of this page is licensed under the <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons + Attribution 3.0 License</a>, and code samples are licensed under the + <a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>. + </p> + <p> + ©2011 Google + </p> + +<!-- begin analytics --> +<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script> +<script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script> + +<script type="text/javascript"> + // chrome doc tracking + try { + var engdocs = _gat._getTracker("YT-10763712-2"); + engdocs._trackPageview(); + } catch(err) {} + + // code.google.com site-wide tracking + try { + _uacct="UA-18071-1"; + _uanchor=1; + _uff=0; + urchinTracker(); + } + catch(e) {/* urchinTracker not available. */} +</script> +<!-- end analytics --> + </div> + </div> <!-- /gc-footer --> + </div> <!-- /gc-container --> +</body></html> diff --git a/chrome/common/extensions/extension_permission_set.cc b/chrome/common/extensions/extension_permission_set.cc index f19fdde..142d576 100644 --- a/chrome/common/extensions/extension_permission_set.cc +++ b/chrome/common/extensions/extension_permission_set.cc @@ -90,7 +90,7 @@ void AddPatternsAndRemovePaths(const URLPatternSet& set, URLPatternSet* out) { } } -} // namespace +} // namespace // // PermissionMessage @@ -100,7 +100,7 @@ void AddPatternsAndRemovePaths(const URLPatternSet& set, URLPatternSet* out) { ExtensionPermissionMessage ExtensionPermissionMessage::CreateFromHostList( const std::set<std::string>& hosts) { std::vector<std::string> host_list(hosts.begin(), hosts.end()); - CHECK(host_list.size() > 0); + CHECK_GT(host_list.size(), 0UL); ID message_id; string16 message; diff --git a/chrome/common/extensions/extension_permission_set.h b/chrome/common/extensions/extension_permission_set.h index 7bf0cfb..f95fa48 100644 --- a/chrome/common/extensions/extension_permission_set.h +++ b/chrome/common/extensions/extension_permission_set.h @@ -94,15 +94,16 @@ class ExtensionAPIPermission { // Real permissions. kBackground, kBookmark, + kChromeAuthPrivate, + kChromePrivate, + kChromeosInfoPrivate, kClipboardRead, kClipboardWrite, kContentSettings, kContextMenus, kCookie, - kChromeAuthPrivate, - kChromePrivate, - kChromeosInfoPrivate, kDebugger, + kDevtools, kExperimental, kFileBrowserHandler, kFileBrowserPrivate, @@ -113,6 +114,8 @@ class ExtensionAPIPermission { kManagement, kMediaPlayerPrivate, kNotification, + kPermissions, + kPlugin, kProxy, kTab, kTts, @@ -120,9 +123,6 @@ class ExtensionAPIPermission { kUnlimitedStorage, kWebSocketProxyPrivate, kWebstorePrivate, - kDevtools, - kPlugin, - kPermissions, kEnumBoundary }; diff --git a/chrome/renderer/resources/renderer_extension_bindings.js b/chrome/renderer/resources/renderer_extension_bindings.js index b9811c1..e60b311 100644 --- a/chrome/renderer/resources/renderer_extension_bindings.js +++ b/chrome/renderer/resources/renderer_extension_bindings.js @@ -316,6 +316,7 @@ var chrome = chrome || {}; "experimental.settings", "experimental.popup", "experimental.processes", + "experimental.privacy", "experimental.rlz", "experimental.sidebar", "experimental.webNavigation", diff --git a/chrome/test/data/extensions/api_test/content_settings/clear/manifest.json b/chrome/test/data/extensions/api_test/content_settings/clear/manifest.json deleted file mode 100644 index ab04c76..0000000 --- a/chrome/test/data/extensions/api_test/content_settings/clear/manifest.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name" : "Content Settings API Test Extension", - "version" : "0.1", - "description" : "Content Settings API Test Extension", - "permissions": [ "experimental", "contentSettings" ], - "background_page": "test.html" -} diff --git a/chrome/test/data/extensions/api_test/content_settings/onchange/manifest.json b/chrome/test/data/extensions/api_test/content_settings/onchange/manifest.json deleted file mode 100644 index cb81e54..0000000 --- a/chrome/test/data/extensions/api_test/content_settings/onchange/manifest.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name" : "Content Settings API Test Extension (Events)", - "version" : "0.1", - "description" : "Content Settings API Test Extension (Events)", - "permissions": [ "experimental", "contentSettings" ], - "background_page": "test.html" -} diff --git a/chrome/test/data/extensions/api_test/content_settings/persistent_incognito/manifest.json b/chrome/test/data/extensions/api_test/content_settings/persistent_incognito/manifest.json deleted file mode 100644 index 79541c3..0000000 --- a/chrome/test/data/extensions/api_test/content_settings/persistent_incognito/manifest.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name" : "Content Settings API Test Extension (Incognito)", - "version" : "0.1", - "description" : "Content Settings API Test Extension (Incognito)", - "permissions": [ "experimental", "contentSettings" ], - "background_page": "test.html" -} diff --git a/chrome/test/data/extensions/api_test/content_settings/session_only_incognito/manifest.json b/chrome/test/data/extensions/api_test/content_settings/session_only_incognito/manifest.json deleted file mode 100644 index 6c421de..0000000 --- a/chrome/test/data/extensions/api_test/content_settings/session_only_incognito/manifest.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name" : "Content Settings API Test Extension (Incognito)", - "version" : "0.1", - "description" : "Content Settings API Test Extension (Incognito)", - "permissions": [ "experimental", "contentSettings", "tabs" ], - "background_page": "test.html" -} diff --git a/chrome/test/data/extensions/api_test/content_settings/standard/test.html b/chrome/test/data/extensions/api_test/content_settings/standard/test.html index 9249024..5894b7e 100644 --- a/chrome/test/data/extensions/api_test/content_settings/standard/test.html +++ b/chrome/test/data/extensions/api_test/content_settings/standard/test.html @@ -25,43 +25,27 @@ var settings = { }; Object.prototype.forEach = function(f) { - for (key in this) { - if (this.hasOwnProperty(key)) - f(key, this[key]); + var k; + for (k in this) { + if (this.hasOwnProperty(k)) + f(k, this[k]); } -} - +}; function expect(expected, message) { return chrome.test.callbackPass(function(value) { chrome.test.assertEq(expected, value, message); }); } + +function expectFalse(message) { + return expect({ + "value": false, + "levelOfControl": "controllable_by_this_extension" + }, message); +} + chrome.test.runTests([ - function getThirdPartyCookiesAllowed() { - cs.global.thirdPartyCookiesAllowed.get( - {}, - expect({ 'value': false, - 'levelOfControl': "controllable_by_this_extension" }, - "third-party cookies should be blocked")); - }, - function getReferrersEnabled() { - cs.global.referrersEnabled.get( - {}, - expect({ 'value': false, - 'levelOfControl': "controllable_by_this_extension" }, - "referrers should be disabled")); - }, - function setThirdPartyCookiesAllowed() { - cs.global.thirdPartyCookiesAllowed.set( - {'value': true}, - chrome.test.callbackPass()); - }, - function setReferrersEnabled() { - cs.global.referrersEnabled.set( - {'value': true}, - chrome.test.callbackPass()); - }, function setDefaultContentSettings() { default_content_settings.forEach(function(type, setting) { cs[type].set({ @@ -91,7 +75,7 @@ chrome.test.runTests([ }, function invalidSettings() { cs.cookies.get({ - 'primaryUrl': 'moo', + 'primaryUrl': 'moo' }, chrome.test.callbackFail("The URL \"moo\" is invalid.")); cs.plugins.set({ 'primaryPattern': 'http://example.com/*', diff --git a/chrome/test/data/extensions/api_test/preference/clear/manifest.json b/chrome/test/data/extensions/api_test/preference/clear/manifest.json new file mode 100644 index 0000000..3c21c04 --- /dev/null +++ b/chrome/test/data/extensions/api_test/preference/clear/manifest.json @@ -0,0 +1,7 @@ +{ + "name" : "Preferences API Test Extension (clear)", + "version" : "0.1", + "description" : "Preferences API Test Extension (clear)", + "permissions": [ "experimental", "privacy" ], + "background_page": "test.html" +} diff --git a/chrome/test/data/extensions/api_test/content_settings/clear/test.html b/chrome/test/data/extensions/api_test/preference/clear/test.html index 69ffc7b..6e97d10 100644 --- a/chrome/test/data/extensions/api_test/content_settings/clear/test.html +++ b/chrome/test/data/extensions/api_test/preference/clear/test.html @@ -1,11 +1,11 @@ <script> // Content settings API test -// Run with browser_tests --gtest_filter=ExtensionApiTest.ContentSettingsClear +// Run with browser_tests --gtest_filter=ExtensionApiTest.PreferenceClear -var cs = chrome.experimental.contentSettings; +var pw = chrome.experimental.privacy.websites; chrome.test.runTests([ function getThirdPartyCookiesAllowed() { - cs.global.thirdPartyCookiesAllowed.get({}, chrome.test.callbackPass( + pw.thirdPartyCookiesAllowed.get({}, chrome.test.callbackPass( function(allowed) { chrome.test.assertEq( allowed, @@ -17,15 +17,15 @@ chrome.test.runTests([ })); }, function setThirdPartyCookiesAllowed() { - cs.global.thirdPartyCookiesAllowed.set( + pw.thirdPartyCookiesAllowed.set( {'value': true}, chrome.test.callbackPass()); }, function clearThirdPartyCookiesAllowed() { - cs.global.thirdPartyCookiesAllowed.clear({}, chrome.test.callbackPass()); + pw.thirdPartyCookiesAllowed.clear({}, chrome.test.callbackPass()); }, function getThirdPartyCookiesAllowed2() { - cs.global.thirdPartyCookiesAllowed.get({}, chrome.test.callbackPass( + pw.thirdPartyCookiesAllowed.get({}, chrome.test.callbackPass( function(allowed) { chrome.test.assertEq( allowed, diff --git a/chrome/test/data/extensions/api_test/preference/onchange/manifest.json b/chrome/test/data/extensions/api_test/preference/onchange/manifest.json new file mode 100644 index 0000000..2f79815 --- /dev/null +++ b/chrome/test/data/extensions/api_test/preference/onchange/manifest.json @@ -0,0 +1,7 @@ +{ + "name" : "Preferences API Test Extension (Events)", + "version" : "0.1", + "description" : "Preferences API Test Extension (Events)", + "permissions": [ "experimental", "privacy" ], + "background_page": "test.html" +} diff --git a/chrome/test/data/extensions/api_test/content_settings/onchange/test.html b/chrome/test/data/extensions/api_test/preference/onchange/test.html index 20be7d6..85fa8ab 100644 --- a/chrome/test/data/extensions/api_test/content_settings/onchange/test.html +++ b/chrome/test/data/extensions/api_test/preference/onchange/test.html @@ -1,6 +1,6 @@ <script> // Content settings API test -// Run with browser_tests --gtest_filter=ExtensionApiTest.ContentSettingsOnChange +// Run with browser_tests --gtest_filter=ExtensionApiTest.PreferenceOnChange // Listen until |event| has fired with all of the values in |expected|. function listenUntil(event, expected) { @@ -17,12 +17,12 @@ function listenUntil(event, expected) { }); } -var cs = chrome.experimental.contentSettings; +var pw = chrome.experimental.privacy.websites; chrome.test.runTests([ function changeDefault() { // Changing the regular settings when no incognito-specific settings are // defined should fire two events. - listenUntil(cs.global.thirdPartyCookiesAllowed.onChange, [{ + listenUntil(pw.thirdPartyCookiesAllowed.onChange, [{ 'value': false, 'levelOfControl': 'controlled_by_this_extension' }, @@ -31,55 +31,55 @@ chrome.test.runTests([ 'incognitoSpecific': false, 'levelOfControl': 'controlled_by_this_extension' }]); - cs.global.thirdPartyCookiesAllowed.set({ + pw.thirdPartyCookiesAllowed.set({ 'value':false }, chrome.test.callbackPass()); }, function changeIncognitoOnly() { - listenUntil(cs.global.thirdPartyCookiesAllowed.onChange, [{ + listenUntil(pw.thirdPartyCookiesAllowed.onChange, [{ 'value': true, 'incognitoSpecific': true, 'levelOfControl': 'controlled_by_this_extension' }]); - cs.global.thirdPartyCookiesAllowed.set({ + pw.thirdPartyCookiesAllowed.set({ 'value': true, 'scope': 'incognito_persistent' }, chrome.test.callbackPass()); }, function changeDefaultOnly() { - listenUntil(cs.global.thirdPartyCookiesAllowed.onChange, [{ + listenUntil(pw.thirdPartyCookiesAllowed.onChange, [{ 'value': true, 'levelOfControl': 'controlled_by_this_extension' }]); - cs.global.thirdPartyCookiesAllowed.set({ + pw.thirdPartyCookiesAllowed.set({ 'value': true }, chrome.test.callbackPass()); }, function changeIncognitoOnlyBack() { // Change the incognito setting back to false so that we get an event when // clearing the value. - listenUntil(cs.global.thirdPartyCookiesAllowed.onChange, [{ + listenUntil(pw.thirdPartyCookiesAllowed.onChange, [{ 'value': false, 'incognitoSpecific': true, 'levelOfControl': 'controlled_by_this_extension' }]); - cs.global.thirdPartyCookiesAllowed.set({ + pw.thirdPartyCookiesAllowed.set({ 'value': false, 'scope': 'incognito_persistent' }, chrome.test.callbackPass()); }, function clearIncognito() { - listenUntil(cs.global.thirdPartyCookiesAllowed.onChange, [{ + listenUntil(pw.thirdPartyCookiesAllowed.onChange, [{ 'value': true, 'incognitoSpecific': false, 'levelOfControl': 'controlled_by_this_extension' }]); - cs.global.thirdPartyCookiesAllowed.clear({ + pw.thirdPartyCookiesAllowed.clear({ 'scope': 'incognito_persistent' }, chrome.test.callbackPass()); }, function clearDefault() { - listenUntil(cs.global.thirdPartyCookiesAllowed.onChange, [{ + listenUntil(pw.thirdPartyCookiesAllowed.onChange, [{ 'value': true, 'levelOfControl': 'controllable_by_this_extension' }, @@ -88,7 +88,7 @@ chrome.test.runTests([ 'incognitoSpecific': false, 'levelOfControl': 'controllable_by_this_extension' }]); - cs.global.thirdPartyCookiesAllowed.clear({}, chrome.test.callbackPass()); + pw.thirdPartyCookiesAllowed.clear({}, chrome.test.callbackPass()); } ]); diff --git a/chrome/test/data/extensions/api_test/preference/persistent_incognito/manifest.json b/chrome/test/data/extensions/api_test/preference/persistent_incognito/manifest.json new file mode 100644 index 0000000..98d4ada --- /dev/null +++ b/chrome/test/data/extensions/api_test/preference/persistent_incognito/manifest.json @@ -0,0 +1,7 @@ +{ + "name" : "Preference API Test Extension (Incognito)", + "version" : "0.1", + "description" : "Preference API Test Extension (Incognito)", + "permissions": [ "experimental", "privacy" ], + "background_page": "test.html" +} diff --git a/chrome/test/data/extensions/api_test/content_settings/persistent_incognito/test.html b/chrome/test/data/extensions/api_test/preference/persistent_incognito/test.html index 486bd23..d589d5fe 100644 --- a/chrome/test/data/extensions/api_test/content_settings/persistent_incognito/test.html +++ b/chrome/test/data/extensions/api_test/preference/persistent_incognito/test.html @@ -1,8 +1,8 @@ <script> // Content settings API test -// Run with browser_tests --gtest_filter=ExtensionApiTest.PersistentIncognitoContentSettings +// Run with browser_tests --gtest_filter=ExtensionApiTest.PreferencePersistentIncognito -var cs = chrome.experimental.contentSettings; +var pw = chrome.experimental.privacy.websites; function expect(expected, message) { return chrome.test.callbackPass(function(value) { chrome.test.assertNoLastError(); @@ -11,14 +11,14 @@ function expect(expected, message) { } chrome.test.runTests([ function getRegular() { - cs.global.thirdPartyCookiesAllowed.get( + pw.thirdPartyCookiesAllowed.get( {}, expect({ 'value': true, 'levelOfControl': "controllable_by_this_extension" }, "third-party cookies should not be blocked")); }, function getIncognito() { - cs.global.thirdPartyCookiesAllowed.get( + pw.thirdPartyCookiesAllowed.get( { 'incognito': true }, expect({ 'value': true, 'incognitoSpecific': false, @@ -26,19 +26,19 @@ chrome.test.runTests([ "third-party cookies should not be blocked in incognito mode")); }, function set() { - cs.global.thirdPartyCookiesAllowed.set( + pw.thirdPartyCookiesAllowed.set( { 'scope': 'incognito_persistent', 'value': false }, chrome.test.callbackPass()); }, function getRegular2() { - cs.global.thirdPartyCookiesAllowed.get( + pw.thirdPartyCookiesAllowed.get( {}, expect({ 'value': true, 'levelOfControl': "controllable_by_this_extension" }, "third-party cookies should not be blocked")); }, function getIncognito2() { - cs.global.thirdPartyCookiesAllowed.get( + pw.thirdPartyCookiesAllowed.get( { 'incognito': true }, expect({ 'value': false, 'incognitoSpecific': true, diff --git a/chrome/test/data/extensions/api_test/preference/session_only_incognito/manifest.json b/chrome/test/data/extensions/api_test/preference/session_only_incognito/manifest.json new file mode 100644 index 0000000..d7bbc0d --- /dev/null +++ b/chrome/test/data/extensions/api_test/preference/session_only_incognito/manifest.json @@ -0,0 +1,7 @@ +{ + "name" : "Preference API Test Extension (Session-only Incognito)", + "version" : "0.1", + "description" : "Preference API Test Extension (Session-only Incognito)", + "permissions": [ "experimental", "privacy", "tabs" ], + "background_page": "test.html" +} diff --git a/chrome/test/data/extensions/api_test/content_settings/session_only_incognito/test.html b/chrome/test/data/extensions/api_test/preference/session_only_incognito/test.html index accf7d8..f41693b 100644 --- a/chrome/test/data/extensions/api_test/content_settings/session_only_incognito/test.html +++ b/chrome/test/data/extensions/api_test/preference/session_only_incognito/test.html @@ -1,8 +1,8 @@ <script> // Content settings API test -// Run with browser_tests --gtest_filter=ExtensionApiTest.SessionOnlyIncognitoContentSettings +// Run with browser_tests --gtest_filter=ExtensionApiTest.PreferenceSessionOnlyIncognito -var cs = chrome.experimental.contentSettings; +var pw = chrome.experimental.privacy.websites; function expect(expected, message) { return chrome.test.callbackPass(function(value) { chrome.test.assertNoLastError(); @@ -11,14 +11,14 @@ function expect(expected, message) { } chrome.test.runTests([ function getRegular() { - cs.global.thirdPartyCookiesAllowed.get( + pw.thirdPartyCookiesAllowed.get( {}, expect({ 'value': true, 'levelOfControl': "controllable_by_this_extension" }, "third-party cookies should not be blocked")); }, function getIncognito() { - cs.global.thirdPartyCookiesAllowed.get( + pw.thirdPartyCookiesAllowed.get( { 'incognito': true }, expect({ 'value': true, 'incognitoSpecific': false, @@ -26,19 +26,19 @@ chrome.test.runTests([ "third-party cookies should not be blocked in incognito mode")); }, function set() { - cs.global.thirdPartyCookiesAllowed.set( + pw.thirdPartyCookiesAllowed.set( { 'scope': 'incognito_persistent', 'value': false }, chrome.test.callbackPass()); }, function getRegular2() { - cs.global.thirdPartyCookiesAllowed.get( + pw.thirdPartyCookiesAllowed.get( {}, expect({ 'value': true, 'levelOfControl': "controllable_by_this_extension" }, "third-party cookies should not be blocked")); }, function getIncognito2() { - cs.global.thirdPartyCookiesAllowed.get( + pw.thirdPartyCookiesAllowed.get( { 'incognito': true }, expect({ 'value': false, 'incognitoSpecific': true, @@ -48,7 +48,7 @@ chrome.test.runTests([ // We cannot set session_only_persistent preferences if there is no incognito // session. function set2() { - cs.global.thirdPartyCookiesAllowed.set( + pw.thirdPartyCookiesAllowed.set( { 'scope': 'incognito_session_only', 'value': true }, chrome.test.callbackFail("You cannot set a preference with scope " + "'incognito_session_only' when no incognito " + @@ -59,19 +59,19 @@ chrome.test.runTests([ }, // session_only_persistent overrides incognito_persistent. function set3() { - cs.global.thirdPartyCookiesAllowed.set( + pw.thirdPartyCookiesAllowed.set( { 'scope': 'incognito_session_only', 'value': true }, chrome.test.callbackPass()); }, function getRegular3() { - cs.global.thirdPartyCookiesAllowed.get( + pw.thirdPartyCookiesAllowed.get( {}, expect({ 'value': true, 'levelOfControl': "controllable_by_this_extension" }, "third-party cookies should not be blocked")); }, function getIncognito3() { - cs.global.thirdPartyCookiesAllowed.get( + pw.thirdPartyCookiesAllowed.get( { 'incognito': true }, expect({ 'value': true, 'incognitoSpecific': true, diff --git a/chrome/test/data/extensions/api_test/preference/standard/manifest.json b/chrome/test/data/extensions/api_test/preference/standard/manifest.json new file mode 100644 index 0000000..201f046 --- /dev/null +++ b/chrome/test/data/extensions/api_test/preference/standard/manifest.json @@ -0,0 +1,7 @@ +{ + "name" : "Preferences API Test Extension", + "version" : "0.1", + "description" : "Preferences API Test Extension", + "permissions": [ "experimental", "privacy" ], + "background_page": "test.html" +} diff --git a/chrome/test/data/extensions/api_test/preference/standard/test.html b/chrome/test/data/extensions/api_test/preference/standard/test.html new file mode 100644 index 0000000..9586441 --- /dev/null +++ b/chrome/test/data/extensions/api_test/preference/standard/test.html @@ -0,0 +1,69 @@ +<script> +// Preferences API test +// Run with browser_tests --gtest_filter=ExtensionApiTest.PreferenceApi + +var preferences_to_test = [ + { + root: chrome.experimental.privacy.network, + preferences: [ + 'networkPredictionEnabled' + ] + }, + { + root: chrome.experimental.privacy.websites, + preferences: [ + 'thirdPartyCookiesAllowed', + 'hyperlinkAuditingEnabled', + 'referrersEnabled' + ] + }, + { + root: chrome.experimental.privacy.services, + preferences: [ + 'alternateErrorPagesEnabled', + 'autofillEnabled', + 'instantEnabled', + // TODO(mkwst): 'metricsReportingEnabled', + 'safeBrowsingEnabled', + 'searchSuggestEnabled', + 'translationServiceEnabled' + ] + }, +]; + +function expect(expected, message) { + return chrome.test.callbackPass(function(value) { + chrome.test.assertEq(expected, value, message); + }); +} + +function expectFalse(pref) { + return expect({ + value: false, + levelOfControl: 'controllable_by_this_extension' + }, '`' + pref + '` is expected to be false.'); +} + +function prefGetter(pref) { + this[pref].get({}, expectFalse(pref)); +} + +function prefSetter(pref) { + this[pref].set({value: true}, chrome.test.callbackPass()); +} + +chrome.test.runTests([ + function getPreferences() { + for (var i = 0; i < preferences_to_test.length; i++) { + preferences_to_test[i].preferences.forEach( + prefGetter.bind(preferences_to_test[i].root)); + } + }, + function setGlobals() { + for (var i = 0; i < preferences_to_test.length; i++) { + preferences_to_test[i].preferences.forEach( + prefSetter.bind(preferences_to_test[i].root)); + } + } +]); +</script> |