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 @@
#include "chrome/browser/extensions/api/preference/preference_helpers.h"
#include "chrome/browser/extensions/api/proxy/proxy_api.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/net/prediction_options.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/pref_names.h"
#include "components/translate/core/common/translate_pref_names.h"
......@@ -74,9 +75,7 @@ PrefMappingEntry kPrefMapping[] = {
APIPermission::kPrivacy, APIPermission::kPrivacy},
{"hyperlinkAuditingEnabled", prefs::kEnableHyperlinkAuditing,
APIPermission::kPrivacy, APIPermission::kPrivacy},
{"networkPredictionEnabled", prefs::kNetworkPredictionEnabled,
APIPermission::kPrivacy, APIPermission::kPrivacy},
{"networkPredictionOptions", prefs::kNetworkPredictionOptions,
{"networkPredictionEnabled", prefs::kNetworkPredictionOptions,
APIPermission::kPrivacy, APIPermission::kPrivacy},
{"passwordSavingEnabled",
password_manager::prefs::kPasswordManagerSavingEnabled,
......@@ -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 {
public:
static PrefMapping* GetInstance() {
......@@ -222,6 +246,8 @@ class PrefMapping {
RegisterPrefTransformer(prefs::kProxy, new ProxyPrefTransformer());
RegisterPrefTransformer(prefs::kBlockThirdPartyCookies,
new InvertBooleanTransformer());
RegisterPrefTransformer(prefs::kNetworkPredictionOptions,
new NetworkPredictionTransformer());
}
~PrefMapping() {
......@@ -645,7 +671,6 @@ bool SetPreferenceFunction::RunSync() {
CHECK(pref);
// Validate new value.
EXTENSION_FUNCTION_VALIDATE(value->GetType() == pref->GetType());
PrefTransformerInterface* transformer =
PrefMapping::GetInstance()->FindTransformerForBrowserPref(browser_pref);
std::string error;
......@@ -657,6 +682,7 @@ bool SetPreferenceFunction::RunSync() {
bad_message_ = bad_message;
return false;
}
EXTENSION_FUNCTION_VALIDATE(browser_pref_value->GetType() == pref->GetType());
// Validate also that the stored value can be converted back by the
// transformer.
......
......@@ -7,6 +7,7 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/extensions/extension_apitest.h"
#include "chrome/browser/net/prediction_options.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/common/chrome_switches.h"
......@@ -43,7 +44,8 @@ class ExtensionPreferenceApiTest : public ExtensionApiTest {
EXPECT_TRUE(prefs->GetBoolean(prefs::kEnableHyperlinkAuditing));
EXPECT_TRUE(prefs->GetBoolean(prefs::kEnableReferrers));
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(
password_manager::prefs::kPasswordManagerSavingEnabled));
EXPECT_TRUE(prefs->GetBoolean(prefs::kSafeBrowsingEnabled));
......@@ -62,7 +64,8 @@ class ExtensionPreferenceApiTest : public ExtensionApiTest {
EXPECT_FALSE(prefs->GetBoolean(prefs::kEnableHyperlinkAuditing));
EXPECT_FALSE(prefs->GetBoolean(prefs::kEnableReferrers));
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(
password_manager::prefs::kPasswordManagerSavingEnabled));
EXPECT_FALSE(prefs->GetBoolean(prefs::kSafeBrowsingEnabled));
......@@ -109,7 +112,8 @@ IN_PROC_BROWSER_TEST_F(ExtensionPreferenceApiTest, MAYBE_Standard) {
prefs->SetBoolean(prefs::kEnableHyperlinkAuditing, false);
prefs->SetBoolean(prefs::kEnableReferrers, 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,
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