summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authornkostylev@chromium.org <nkostylev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-13 00:12:02 +0000
committernkostylev@chromium.org <nkostylev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-13 00:12:02 +0000
commit7c8ba8b0e84dab57c5a84dbc768bd72960e94120 (patch)
tree0e0b080970de790f70a5a89e05ff2b27f30ddd95 /chrome/browser
parent76e491b00524253d7593697fea5d9d3d54e4c4e5 (diff)
downloadchromium_src-7c8ba8b0e84dab57c5a84dbc768bd72960e94120.zip
chromium_src-7c8ba8b0e84dab57c5a84dbc768bd72960e94120.tar.gz
chromium_src-7c8ba8b0e84dab57c5a84dbc768bd72960e94120.tar.bz2
[cros] Add "Show portal button" flag in carrier config that launches carrier portal.
BUG=24522 TEST=Have a device with Verizon + active plan. Open Verizon network details. It should have "View account" button that opens portal. Review URL: http://codereview.chromium.org/9186012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@117559 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/chromeos/cros/mock_network_library.h4
-rw-r--r--chrome/browser/chromeos/cros/network_library.cc6
-rw-r--r--chrome/browser/chromeos/cros/network_library.h4
-rw-r--r--chrome/browser/chromeos/mobile_config.cc5
-rw-r--r--chrome/browser/chromeos/mobile_config.h16
-rw-r--r--chrome/browser/chromeos/mobile_config_unittest.cc6
-rw-r--r--chrome/browser/resources/options/chromeos/internet_detail.html2
-rw-r--r--chrome/browser/resources/options/chromeos/internet_options.js19
-rw-r--r--chrome/browser/resources/options2/chromeos/internet_detail.html2
-rw-r--r--chrome/browser/resources/options2/chromeos/internet_options.js19
-rw-r--r--chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc26
-rw-r--r--chrome/browser/ui/webui/options/chromeos/internet_options_handler.h5
-rw-r--r--chrome/browser/ui/webui/options2/chromeos/internet_options_handler2.cc26
-rw-r--r--chrome/browser/ui/webui/options2/chromeos/internet_options_handler2.h5
14 files changed, 108 insertions, 37 deletions
diff --git a/chrome/browser/chromeos/cros/mock_network_library.h b/chrome/browser/chromeos/cros/mock_network_library.h
index 92b6905..1dfb384 100644
--- a/chrome/browser/chromeos/cros/mock_network_library.h
+++ b/chrome/browser/chromeos/cros/mock_network_library.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -127,7 +127,7 @@ class MockNetworkLibrary : public NetworkLibrary {
MOCK_METHOD1(ForgetNetwork, void(const std::string&));
MOCK_METHOD2(SetNetworkProfile, void(const std::string&,
NetworkProfileType));
- MOCK_CONST_METHOD0(GetCellularHomeCarrierId, std::string(void));
+ MOCK_CONST_METHOD0(GetCellularHomeCarrierId, const std::string&(void));
MOCK_CONST_METHOD0(ethernet_available, bool(void));
MOCK_CONST_METHOD0(wifi_available, bool(void));
diff --git a/chrome/browser/chromeos/cros/network_library.cc b/chrome/browser/chromeos/cros/network_library.cc
index 2fbff69..5a47d59b 100644
--- a/chrome/browser/chromeos/cros/network_library.cc
+++ b/chrome/browser/chromeos/cros/network_library.cc
@@ -1723,7 +1723,7 @@ class NetworkLibraryImplBase : public NetworkLibrary {
const std::string& path) const OVERRIDE;
virtual void SignalCellularPlanPayment() OVERRIDE;
virtual bool HasRecentCellularPlanPayment() OVERRIDE;
- virtual std::string GetCellularHomeCarrierId() const OVERRIDE;
+ virtual const std::string& GetCellularHomeCarrierId() const OVERRIDE;
// virtual ChangePin implemented in derived classes.
// virtual ChangeRequiredPin implemented in derived classes.
@@ -2499,11 +2499,11 @@ bool NetworkLibraryImplBase::HasRecentCellularPlanPayment() {
cellular_plan_payment_time_).InHours() < kRecentPlanPaymentHours;
}
-std::string NetworkLibraryImplBase::GetCellularHomeCarrierId() const {
+const std::string& NetworkLibraryImplBase::GetCellularHomeCarrierId() const {
const NetworkDevice* cellular = FindCellularDevice();
if (cellular)
return cellular->home_provider_id();
- return std::string();
+ return EmptyString();
}
/////////////////////////////////////////////////////////////////////////////
diff --git a/chrome/browser/chromeos/cros/network_library.h b/chrome/browser/chromeos/cros/network_library.h
index 24ab412..2368cb0 100644
--- a/chrome/browser/chromeos/cros/network_library.h
+++ b/chrome/browser/chromeos/cros/network_library.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -1651,7 +1651,7 @@ class NetworkLibrary {
// Returns home carrier ID if available, otherwise empty string is returned.
// Carrier ID format: <carrier name> (country). Ex.: "Verizon (us)".
- virtual std::string GetCellularHomeCarrierId() const = 0;
+ virtual const std::string& GetCellularHomeCarrierId() const = 0;
// Passes |old_pin|, |new_pin| to change SIM card PIM.
virtual void ChangePin(const std::string& old_pin,
diff --git a/chrome/browser/chromeos/mobile_config.cc b/chrome/browser/chromeos/mobile_config.cc
index 9ed9a1d..a655ae2 100644
--- a/chrome/browser/chromeos/mobile_config.cc
+++ b/chrome/browser/chromeos/mobile_config.cc
@@ -31,6 +31,7 @@ const char kCarriersAttr[] = "carriers";
const char kCarrierIdsAttr[] = "ids";
const char kCarrierIdAttr[] = "id";
const char kTopUpURLAttr[] = "top_up_url";
+const char kShowPortalButtonAttr[] = "show_portal_button";
const char kDealsAttr[] = "deals";
// Carrier deal attributes.
@@ -107,7 +108,8 @@ std::string MobileConfig::CarrierDeal::GetLocalizedString(
// MobileConfig::Carrier implementation. ---------------------------------------
MobileConfig::Carrier::Carrier(DictionaryValue* carrier_dict,
- const std::string& initial_locale) {
+ const std::string& initial_locale)
+ : show_portal_button_(false) {
InitFromDictionary(carrier_dict, initial_locale);
}
@@ -144,6 +146,7 @@ const MobileConfig::CarrierDeal* MobileConfig::Carrier::GetDeal(
void MobileConfig::Carrier::InitFromDictionary(
base::DictionaryValue* carrier_dict, const std::string& initial_locale) {
carrier_dict->GetString(kTopUpURLAttr, &top_up_url_);
+ carrier_dict->GetBoolean(kShowPortalButtonAttr, &show_portal_button_);
bool exclude_deals = false;
if (carrier_dict->GetBoolean(kExcludeDealsAttr, &exclude_deals) &&
diff --git a/chrome/browser/chromeos/mobile_config.h b/chrome/browser/chromeos/mobile_config.h
index 4b1954e..4f4f407 100644
--- a/chrome/browser/chromeos/mobile_config.h
+++ b/chrome/browser/chromeos/mobile_config.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -76,6 +76,7 @@ class MobileConfig : public CustomizationDocument {
const std::vector<std::string>& external_ids() { return external_ids_; }
const std::string& top_up_url() const { return top_up_url_; }
+ bool show_portal_button() const { return show_portal_button_; }
// Returns "default" carrier deal i.e. first deal defined or NULL
// if there're no deals defined.
@@ -96,9 +97,20 @@ class MobileConfig : public CustomizationDocument {
// Maps deal id to deal instance.
typedef std::map<std::string, CarrierDeal*> CarrierDeals;
- std::string top_up_url_;
+ // List of external IDs that should map to this carrier.
std::vector<std::string> external_ids_;
+ // Top-up URL. Used in network menu ("View account" link) +
+ // carrier name in network details (in settings) is a link.
+ std::string top_up_url_;
+
+ // If true, show a separate "View account" button on network details page
+ // even if device is activated and doesn't need new data plan.
+ // It's not shown when one of the "Buy plan" / "Activate" is shown.
+ // All "Buy plan" / "Activate" / "View account" buttons launch
+ // carrier portal (chrome://mobilesetup/ extension).
+ bool show_portal_button_;
+
CarrierDeals deals_;
DISALLOW_COPY_AND_ASSIGN(Carrier);
diff --git a/chrome/browser/chromeos/mobile_config_unittest.cc b/chrome/browser/chromeos/mobile_config_unittest.cc
index bc24774..10c76b6 100644
--- a/chrome/browser/chromeos/mobile_config_unittest.cc
+++ b/chrome/browser/chromeos/mobile_config_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -27,6 +27,7 @@ const char kGoodMobileConfig[] =
" },\n"
" ],\n"
" \"top_up_url\" : \"http://www.carrier.com/\",\n"
+ " \"show_portal_button\" : true,\n"
" \"deals\" : [\n"
" {\n"
" \"deal_id\" : \"0\",\n"
@@ -122,6 +123,7 @@ TEST(MobileConfigTest, Basic) {
carrier = config.GetCarrier("cr (country)");
EXPECT_TRUE(carrier != NULL);
EXPECT_EQ("http://www.carrier.com/", carrier->top_up_url());
+ EXPECT_EQ(true, carrier->show_portal_button());
const MobileConfig::CarrierDeal* deal;
deal = carrier->GetDefaultDeal();
EXPECT_TRUE(deal != NULL);
@@ -145,6 +147,8 @@ TEST(MobileConfigTest, OldDeal) {
const MobileConfig::Carrier* carrier;
carrier = config.GetCarrier("Carrier (country)");
EXPECT_TRUE(carrier != NULL);
+ // Check default value.
+ EXPECT_EQ(false, carrier->show_portal_button());
const MobileConfig::CarrierDeal* deal;
// TODO(nkostylev): Pass fixed time instead of relying on Time::Now().
deal = carrier->GetDefaultDeal();
diff --git a/chrome/browser/resources/options/chromeos/internet_detail.html b/chrome/browser/resources/options/chromeos/internet_detail.html
index d722066..a42ab86 100644
--- a/chrome/browser/resources/options/chromeos/internet_detail.html
+++ b/chrome/browser/resources/options/chromeos/internet_detail.html
@@ -360,5 +360,7 @@
i18n-content="activate_button"></button>
<button id="buyplanDetails"
i18n-content="buyplan_button"></button>
+ <button id="viewAccountDetails"
+ i18n-content="view_account_button"></button>
</div>
</div>
diff --git a/chrome/browser/resources/options/chromeos/internet_options.js b/chrome/browser/resources/options/chromeos/internet_options.js
index acb998b..5186de8 100644
--- a/chrome/browser/resources/options/chromeos/internet_options.js
+++ b/chrome/browser/resources/options/chromeos/internet_options.js
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -70,19 +70,19 @@ cr.define('options', function() {
});
$('enable-wifi').addEventListener('click', function(event) {
event.target.disabled = true;
- chrome.send('enableWifi', []);
+ chrome.send('enableWifi');
});
$('disable-wifi').addEventListener('click', function(event) {
event.target.disabled = true;
- chrome.send('disableWifi', []);
+ chrome.send('disableWifi');
});
$('enable-cellular').addEventListener('click', function(event) {
event.target.disabled = true;
- chrome.send('enableCellular', []);
+ chrome.send('enableCellular');
});
$('disable-cellular').addEventListener('click', function(event) {
event.target.disabled = true;
- chrome.send('disableCellular', []);
+ chrome.send('disableCellular');
});
$('change-proxy-button').addEventListener('click', function(event) {
OptionsPage.closeOverlay();
@@ -91,7 +91,11 @@ cr.define('options', function() {
['Options_ShowProxySettings']);
});
$('buyplanDetails').addEventListener('click', function(event) {
- chrome.send('buyDataPlan', []);
+ chrome.send('buyDataPlan');
+ OptionsPage.closeOverlay();
+ });
+ $('viewAccountDetails').addEventListener('click', function(event) {
+ chrome.send('buyDataPlan');
OptionsPage.closeOverlay();
});
$('cellularApnUseDefault').addEventListener('click', function(event) {
@@ -412,6 +416,7 @@ cr.define('options', function() {
$('buyplanDetails').hidden = !data.showBuyButton;
$('activateDetails').hidden = !data.showActivateButton;
+ $('viewAccountDetails').hidden = !data.showViewAccountButton;
};
InternetOptions.updateSecurityTab = function(requirePin) {
@@ -425,6 +430,7 @@ cr.define('options', function() {
$('connectionState').data = data;
$('buyplanDetails').hidden = true;
$('activateDetails').hidden = true;
+ $('viewAccountDetails').hidden = true;
$('detailsInternetLogin').hidden = data.connected;
if (data.type == options.internet.Constants.TYPE_ETHERNET)
$('detailsInternetDisconnect').hidden = true;
@@ -639,6 +645,7 @@ cr.define('options', function() {
$('autoConnectNetworkCellular').disabled = false;
$('buyplanDetails').hidden = !data.showBuyButton;
+ $('viewAccountDetails').hidden = !data.showViewAccountButton;
$('activateDetails').hidden = !data.showActivateButton;
if (data.showActivateButton) {
$('detailsInternetLogin').hidden = true;
diff --git a/chrome/browser/resources/options2/chromeos/internet_detail.html b/chrome/browser/resources/options2/chromeos/internet_detail.html
index d722066..a42ab86 100644
--- a/chrome/browser/resources/options2/chromeos/internet_detail.html
+++ b/chrome/browser/resources/options2/chromeos/internet_detail.html
@@ -360,5 +360,7 @@
i18n-content="activate_button"></button>
<button id="buyplanDetails"
i18n-content="buyplan_button"></button>
+ <button id="viewAccountDetails"
+ i18n-content="view_account_button"></button>
</div>
</div>
diff --git a/chrome/browser/resources/options2/chromeos/internet_options.js b/chrome/browser/resources/options2/chromeos/internet_options.js
index 6391c9e..a983d66 100644
--- a/chrome/browser/resources/options2/chromeos/internet_options.js
+++ b/chrome/browser/resources/options2/chromeos/internet_options.js
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -70,19 +70,19 @@ cr.define('options', function() {
});
$('enable-wifi').addEventListener('click', function(event) {
event.target.disabled = true;
- chrome.send('enableWifi', []);
+ chrome.send('enableWifi');
});
$('disable-wifi').addEventListener('click', function(event) {
event.target.disabled = true;
- chrome.send('disableWifi', []);
+ chrome.send('disableWifi');
});
$('enable-cellular').addEventListener('click', function(event) {
event.target.disabled = true;
- chrome.send('enableCellular', []);
+ chrome.send('enableCellular');
});
$('disable-cellular').addEventListener('click', function(event) {
event.target.disabled = true;
- chrome.send('disableCellular', []);
+ chrome.send('disableCellular');
});
$('change-proxy-button').addEventListener('click', function(event) {
OptionsPage.closeOverlay();
@@ -91,7 +91,11 @@ cr.define('options', function() {
['Options_ShowProxySettings']);
});
$('buyplanDetails').addEventListener('click', function(event) {
- chrome.send('buyDataPlan', []);
+ chrome.send('buyDataPlan');
+ OptionsPage.closeOverlay();
+ });
+ $('viewAccountDetails').addEventListener('click', function(event) {
+ chrome.send('buyDataPlan');
OptionsPage.closeOverlay();
});
$('cellularApnUseDefault').addEventListener('click', function(event) {
@@ -412,6 +416,7 @@ cr.define('options', function() {
$('buyplanDetails').hidden = !data.showBuyButton;
$('activateDetails').hidden = !data.showActivateButton;
+ $('viewAccountDetails').hidden = !data.showViewAccountButton;
};
InternetOptions.updateSecurityTab = function(requirePin) {
@@ -425,6 +430,7 @@ cr.define('options', function() {
$('connectionState').data = data;
$('buyplanDetails').hidden = true;
$('activateDetails').hidden = true;
+ $('viewAccountDetails').hidden = true;
$('detailsInternetLogin').hidden = data.connected;
if (data.type == options.internet.Constants.TYPE_ETHERNET)
$('detailsInternetDisconnect').hidden = true;
@@ -639,6 +645,7 @@ cr.define('options', function() {
$('autoConnectNetworkCellular').disabled = false;
$('buyplanDetails').hidden = !data.showBuyButton;
+ $('viewAccountDetails').hidden = !data.showViewAccountButton;
$('activateDetails').hidden = !data.showActivateButton;
if (data.showActivateButton) {
$('detailsInternetLogin').hidden = true;
diff --git a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc
index 64c70ee..0c86d8c 100644
--- a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc
+++ b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -302,6 +302,9 @@ void InternetOptionsHandler::GetLocalizedValues(
localized_strings->SetString("buyplan_button",
l10n_util::GetStringUTF16(
IDS_OPTIONS_SETTINGS_BUY_PLAN));
+ localized_strings->SetString("view_account_button",
+ l10n_util::GetStringUTF16(
+ IDS_STATUSBAR_NETWORK_VIEW_ACCOUNT));
localized_strings->SetString("changeProxyButton",
l10n_util::GetStringUTF16(
@@ -745,7 +748,9 @@ void InternetOptionsHandler::OnCellularDataPlanChanged(
connection_plans.SetBoolean("activated",
cellular->activation_state() == chromeos::ACTIVATION_STATE_ACTIVATED);
connection_plans.Set("plans", plan_list);
- SetActivationButtonVisibility(cellular, &connection_plans);
+ SetActivationButtonVisibility(cellular,
+ &connection_plans,
+ cros_->GetCellularHomeCarrierId());
web_ui()->CallJavascriptFunction(
"options.InternetOptions.updateCellularPlans", connection_plans);
}
@@ -1056,7 +1061,7 @@ void InternetOptionsHandler::PopulateCellularDetails(
chromeos::MobileConfig* config = chromeos::MobileConfig::GetInstance();
if (config->IsReady()) {
- std::string carrier_id = cros_->GetCellularHomeCarrierId();
+ const std::string& carrier_id = cros_->GetCellularHomeCarrierId();
const chromeos::MobileConfig::Carrier* carrier =
config->GetCarrier(carrier_id);
if (carrier && !carrier->top_up_url().empty())
@@ -1073,7 +1078,9 @@ void InternetOptionsHandler::PopulateCellularDetails(
cellular_propety_ui_data);
}
- SetActivationButtonVisibility(cellular, dictionary);
+ SetActivationButtonVisibility(cellular,
+ dictionary,
+ cros_->GetCellularHomeCarrierId());
}
void InternetOptionsHandler::PopulateVPNDetails(
@@ -1089,7 +1096,8 @@ void InternetOptionsHandler::PopulateVPNDetails(
void InternetOptionsHandler::SetActivationButtonVisibility(
const chromeos::CellularNetwork* cellular,
- DictionaryValue* dictionary) {
+ DictionaryValue* dictionary,
+ const std::string& carrier_id) {
if (cellular->needs_new_plan()) {
dictionary->SetBoolean("showBuyButton", true);
} else if (cellular->activation_state() !=
@@ -1097,6 +1105,14 @@ void InternetOptionsHandler::SetActivationButtonVisibility(
cellular->activation_state() !=
chromeos::ACTIVATION_STATE_ACTIVATED) {
dictionary->SetBoolean("showActivateButton", true);
+ } else {
+ const chromeos::MobileConfig::Carrier* carrier =
+ chromeos::MobileConfig::GetInstance()->GetCarrier(carrier_id);
+ if (carrier && carrier->show_portal_button()) {
+ // This will trigger BuyDataPlanCallback() so that
+ // chrome://mobilesetup/ will open carrier specific portal.
+ dictionary->SetBoolean("showViewAccountButton", true);
+ }
}
}
diff --git a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.h b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.h
index 50e3dcc..e971a7b 100644
--- a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.h
+++ b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -77,7 +77,8 @@ class InternetOptionsHandler
void RefreshCellularPlanCallback(const base::ListValue* args);
void SetActivationButtonVisibility(
const chromeos::CellularNetwork* cellular,
- base::DictionaryValue* dictionary);
+ base::DictionaryValue* dictionary,
+ const std::string& carrier_id);
void SetPreferNetworkCallback(const base::ListValue* args);
void SetAutoConnectCallback(const base::ListValue* args);
diff --git a/chrome/browser/ui/webui/options2/chromeos/internet_options_handler2.cc b/chrome/browser/ui/webui/options2/chromeos/internet_options_handler2.cc
index 5ecd18f..ad282d1 100644
--- a/chrome/browser/ui/webui/options2/chromeos/internet_options_handler2.cc
+++ b/chrome/browser/ui/webui/options2/chromeos/internet_options_handler2.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -304,6 +304,9 @@ void InternetOptionsHandler::GetLocalizedValues(
localized_strings->SetString("buyplan_button",
l10n_util::GetStringUTF16(
IDS_OPTIONS_SETTINGS_BUY_PLAN));
+ localized_strings->SetString("view_account_button",
+ l10n_util::GetStringUTF16(
+ IDS_STATUSBAR_NETWORK_VIEW_ACCOUNT));
localized_strings->SetString("changeProxyButton",
l10n_util::GetStringUTF16(
@@ -747,7 +750,9 @@ void InternetOptionsHandler::OnCellularDataPlanChanged(
connection_plans.SetBoolean("activated",
cellular->activation_state() == chromeos::ACTIVATION_STATE_ACTIVATED);
connection_plans.Set("plans", plan_list);
- SetActivationButtonVisibility(cellular, &connection_plans);
+ SetActivationButtonVisibility(cellular,
+ &connection_plans,
+ cros_->GetCellularHomeCarrierId());
web_ui()->CallJavascriptFunction(
"options.InternetOptions.updateCellularPlans", connection_plans);
}
@@ -1058,7 +1063,7 @@ void InternetOptionsHandler::PopulateCellularDetails(
chromeos::MobileConfig* config = chromeos::MobileConfig::GetInstance();
if (config->IsReady()) {
- std::string carrier_id = cros_->GetCellularHomeCarrierId();
+ const std::string& carrier_id = cros_->GetCellularHomeCarrierId();
const chromeos::MobileConfig::Carrier* carrier =
config->GetCarrier(carrier_id);
if (carrier && !carrier->top_up_url().empty())
@@ -1075,7 +1080,9 @@ void InternetOptionsHandler::PopulateCellularDetails(
cellular_propety_ui_data);
}
- SetActivationButtonVisibility(cellular, dictionary);
+ SetActivationButtonVisibility(cellular,
+ dictionary,
+ cros_->GetCellularHomeCarrierId());
}
void InternetOptionsHandler::PopulateVPNDetails(
@@ -1091,7 +1098,8 @@ void InternetOptionsHandler::PopulateVPNDetails(
void InternetOptionsHandler::SetActivationButtonVisibility(
const chromeos::CellularNetwork* cellular,
- DictionaryValue* dictionary) {
+ DictionaryValue* dictionary,
+ const std::string& carrier_id) {
if (cellular->needs_new_plan()) {
dictionary->SetBoolean("showBuyButton", true);
} else if (cellular->activation_state() !=
@@ -1099,6 +1107,14 @@ void InternetOptionsHandler::SetActivationButtonVisibility(
cellular->activation_state() !=
chromeos::ACTIVATION_STATE_ACTIVATED) {
dictionary->SetBoolean("showActivateButton", true);
+ } else {
+ const chromeos::MobileConfig::Carrier* carrier =
+ chromeos::MobileConfig::GetInstance()->GetCarrier(carrier_id);
+ if (carrier && carrier->show_portal_button()) {
+ // This will trigger BuyDataPlanCallback() so that
+ // chrome://mobilesetup/ will open carrier specific portal.
+ dictionary->SetBoolean("showViewAccountButton", true);
+ }
}
}
diff --git a/chrome/browser/ui/webui/options2/chromeos/internet_options_handler2.h b/chrome/browser/ui/webui/options2/chromeos/internet_options_handler2.h
index 90d71a0..a81e73f 100644
--- a/chrome/browser/ui/webui/options2/chromeos/internet_options_handler2.h
+++ b/chrome/browser/ui/webui/options2/chromeos/internet_options_handler2.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -79,7 +79,8 @@ class InternetOptionsHandler
void RefreshCellularPlanCallback(const base::ListValue* args);
void SetActivationButtonVisibility(
const chromeos::CellularNetwork* cellular,
- base::DictionaryValue* dictionary);
+ base::DictionaryValue* dictionary,
+ const std::string& carrier_id);
void SetPreferNetworkCallback(const base::ListValue* args);
void SetAutoConnectCallback(const base::ListValue* args);