Commit 2fcb4c34 authored by bnc's avatar bnc Committed by Commit bot

Update extension preference API.

Modify Boolean extension preference "networkPredictionEnabled" to interact with native browser preference |prefs::kNetworkPredictionOptions| instead of obsolete |prefs::kNetworkPredictionEnabled|.

BUG=423748

Review URL: https://codereview.chromium.org/652013002

Cr-Commit-Position: refs/heads/master@{#300723}
parent 99b1bc2d
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include "chrome/browser/extensions/api/preference/preference_helpers.h" #include "chrome/browser/extensions/api/preference/preference_helpers.h"
#include "chrome/browser/extensions/api/proxy/proxy_api.h" #include "chrome/browser/extensions/api/proxy/proxy_api.h"
#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/net/prediction_options.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/common/pref_names.h" #include "chrome/common/pref_names.h"
#include "components/translate/core/common/translate_pref_names.h" #include "components/translate/core/common/translate_pref_names.h"
...@@ -74,9 +75,7 @@ PrefMappingEntry kPrefMapping[] = { ...@@ -74,9 +75,7 @@ PrefMappingEntry kPrefMapping[] = {
APIPermission::kPrivacy, APIPermission::kPrivacy}, APIPermission::kPrivacy, APIPermission::kPrivacy},
{"hyperlinkAuditingEnabled", prefs::kEnableHyperlinkAuditing, {"hyperlinkAuditingEnabled", prefs::kEnableHyperlinkAuditing,
APIPermission::kPrivacy, APIPermission::kPrivacy}, APIPermission::kPrivacy, APIPermission::kPrivacy},
{"networkPredictionEnabled", prefs::kNetworkPredictionEnabled, {"networkPredictionEnabled", prefs::kNetworkPredictionOptions,
APIPermission::kPrivacy, APIPermission::kPrivacy},
{"networkPredictionOptions", prefs::kNetworkPredictionOptions,
APIPermission::kPrivacy, APIPermission::kPrivacy}, APIPermission::kPrivacy, APIPermission::kPrivacy},
{"passwordSavingEnabled", {"passwordSavingEnabled",
password_manager::prefs::kPasswordManagerSavingEnabled, password_manager::prefs::kPasswordManagerSavingEnabled,
...@@ -157,6 +156,31 @@ class InvertBooleanTransformer : public PrefTransformerInterface { ...@@ -157,6 +156,31 @@ class InvertBooleanTransformer : public PrefTransformerInterface {
} }
}; };
class NetworkPredictionTransformer : public PrefTransformerInterface {
public:
virtual base::Value* ExtensionToBrowserPref(const base::Value* extension_pref,
std::string* error,
bool* bad_message) override {
bool bool_value = false;
DCHECK(extension_pref->GetAsBoolean(&bool_value));
if (bool_value) {
return new base::FundamentalValue(
chrome_browser_net::NETWORK_PREDICTION_DEFAULT);
} else {
return new base::FundamentalValue(
chrome_browser_net::NETWORK_PREDICTION_NEVER);
}
}
virtual base::Value* BrowserToExtensionPref(
const base::Value* browser_pref) override {
int int_value = chrome_browser_net::NETWORK_PREDICTION_NEVER;
DCHECK(browser_pref->GetAsInteger(&int_value));
return new base::FundamentalValue(
int_value != chrome_browser_net::NETWORK_PREDICTION_NEVER);
}
};
class PrefMapping { class PrefMapping {
public: public:
static PrefMapping* GetInstance() { static PrefMapping* GetInstance() {
...@@ -222,6 +246,8 @@ class PrefMapping { ...@@ -222,6 +246,8 @@ class PrefMapping {
RegisterPrefTransformer(prefs::kProxy, new ProxyPrefTransformer()); RegisterPrefTransformer(prefs::kProxy, new ProxyPrefTransformer());
RegisterPrefTransformer(prefs::kBlockThirdPartyCookies, RegisterPrefTransformer(prefs::kBlockThirdPartyCookies,
new InvertBooleanTransformer()); new InvertBooleanTransformer());
RegisterPrefTransformer(prefs::kNetworkPredictionOptions,
new NetworkPredictionTransformer());
} }
~PrefMapping() { ~PrefMapping() {
...@@ -645,7 +671,6 @@ bool SetPreferenceFunction::RunSync() { ...@@ -645,7 +671,6 @@ bool SetPreferenceFunction::RunSync() {
CHECK(pref); CHECK(pref);
// Validate new value. // Validate new value.
EXTENSION_FUNCTION_VALIDATE(value->GetType() == pref->GetType());
PrefTransformerInterface* transformer = PrefTransformerInterface* transformer =
PrefMapping::GetInstance()->FindTransformerForBrowserPref(browser_pref); PrefMapping::GetInstance()->FindTransformerForBrowserPref(browser_pref);
std::string error; std::string error;
...@@ -657,6 +682,7 @@ bool SetPreferenceFunction::RunSync() { ...@@ -657,6 +682,7 @@ bool SetPreferenceFunction::RunSync() {
bad_message_ = bad_message; bad_message_ = bad_message;
return false; return false;
} }
EXTENSION_FUNCTION_VALIDATE(browser_pref_value->GetType() == pref->GetType());
// Validate also that the stored value can be converted back by the // Validate also that the stored value can be converted back by the
// transformer. // transformer.
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/extensions/extension_apitest.h" #include "chrome/browser/extensions/extension_apitest.h"
#include "chrome/browser/net/prediction_options.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/common/chrome_switches.h" #include "chrome/common/chrome_switches.h"
...@@ -43,7 +44,8 @@ class ExtensionPreferenceApiTest : public ExtensionApiTest { ...@@ -43,7 +44,8 @@ class ExtensionPreferenceApiTest : public ExtensionApiTest {
EXPECT_TRUE(prefs->GetBoolean(prefs::kEnableHyperlinkAuditing)); EXPECT_TRUE(prefs->GetBoolean(prefs::kEnableHyperlinkAuditing));
EXPECT_TRUE(prefs->GetBoolean(prefs::kEnableReferrers)); EXPECT_TRUE(prefs->GetBoolean(prefs::kEnableReferrers));
EXPECT_TRUE(prefs->GetBoolean(prefs::kEnableTranslate)); EXPECT_TRUE(prefs->GetBoolean(prefs::kEnableTranslate));
EXPECT_TRUE(prefs->GetBoolean(prefs::kNetworkPredictionEnabled)); EXPECT_EQ(chrome_browser_net::NETWORK_PREDICTION_DEFAULT,
prefs->GetInteger(prefs::kNetworkPredictionOptions));
EXPECT_TRUE(prefs->GetBoolean( EXPECT_TRUE(prefs->GetBoolean(
password_manager::prefs::kPasswordManagerSavingEnabled)); password_manager::prefs::kPasswordManagerSavingEnabled));
EXPECT_TRUE(prefs->GetBoolean(prefs::kSafeBrowsingEnabled)); EXPECT_TRUE(prefs->GetBoolean(prefs::kSafeBrowsingEnabled));
...@@ -62,7 +64,8 @@ class ExtensionPreferenceApiTest : public ExtensionApiTest { ...@@ -62,7 +64,8 @@ class ExtensionPreferenceApiTest : public ExtensionApiTest {
EXPECT_FALSE(prefs->GetBoolean(prefs::kEnableHyperlinkAuditing)); EXPECT_FALSE(prefs->GetBoolean(prefs::kEnableHyperlinkAuditing));
EXPECT_FALSE(prefs->GetBoolean(prefs::kEnableReferrers)); EXPECT_FALSE(prefs->GetBoolean(prefs::kEnableReferrers));
EXPECT_FALSE(prefs->GetBoolean(prefs::kEnableTranslate)); EXPECT_FALSE(prefs->GetBoolean(prefs::kEnableTranslate));
EXPECT_FALSE(prefs->GetBoolean(prefs::kNetworkPredictionEnabled)); EXPECT_EQ(chrome_browser_net::NETWORK_PREDICTION_NEVER,
prefs->GetInteger(prefs::kNetworkPredictionOptions));
EXPECT_FALSE(prefs->GetBoolean( EXPECT_FALSE(prefs->GetBoolean(
password_manager::prefs::kPasswordManagerSavingEnabled)); password_manager::prefs::kPasswordManagerSavingEnabled));
EXPECT_FALSE(prefs->GetBoolean(prefs::kSafeBrowsingEnabled)); EXPECT_FALSE(prefs->GetBoolean(prefs::kSafeBrowsingEnabled));
...@@ -109,7 +112,8 @@ IN_PROC_BROWSER_TEST_F(ExtensionPreferenceApiTest, MAYBE_Standard) { ...@@ -109,7 +112,8 @@ IN_PROC_BROWSER_TEST_F(ExtensionPreferenceApiTest, MAYBE_Standard) {
prefs->SetBoolean(prefs::kEnableHyperlinkAuditing, false); prefs->SetBoolean(prefs::kEnableHyperlinkAuditing, false);
prefs->SetBoolean(prefs::kEnableReferrers, false); prefs->SetBoolean(prefs::kEnableReferrers, false);
prefs->SetBoolean(prefs::kEnableTranslate, false); prefs->SetBoolean(prefs::kEnableTranslate, false);
prefs->SetBoolean(prefs::kNetworkPredictionEnabled, false); prefs->SetInteger(prefs::kNetworkPredictionOptions,
chrome_browser_net::NETWORK_PREDICTION_NEVER);
prefs->SetBoolean(password_manager::prefs::kPasswordManagerSavingEnabled, prefs->SetBoolean(password_manager::prefs::kPasswordManagerSavingEnabled,
false); false);
prefs->SetBoolean(prefs::kSafeBrowsingEnabled, false); prefs->SetBoolean(prefs::kSafeBrowsingEnabled, false);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment