diff options
author | zelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-19 21:21:40 +0000 |
---|---|---|
committer | zelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-19 21:21:40 +0000 |
commit | a8daf3387f42c6223447660b3210637d1feccc36 (patch) | |
tree | 0261008bb21a72826e5d9a5e96c4a65229658a96 | |
parent | c8c1ecd5513ee2e1f2771998163e378a590ffe56 (diff) | |
download | chromium_src-a8daf3387f42c6223447660b3210637d1feccc36.zip chromium_src-a8daf3387f42c6223447660b3210637d1feccc36.tar.gz chromium_src-a8daf3387f42c6223447660b3210637d1feccc36.tar.bz2 |
Changed account details button from the settings page to redirect to payment portal (not activation page). This should work with portals that require either GET or POST at landing.
BUG=chromium-os:24522
TEST=make sure that account details button from the settings page take you to payment portal not activation flow
Review URL: https://chromiumcodereview.appspot.com/9249049
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@118361 0039d316-1c4b-4281-b951-d872f2087c98
10 files changed, 69 insertions, 13 deletions
diff --git a/chrome/browser/chromeos/cros/network_library.cc b/chrome/browser/chromeos/cros/network_library.cc index 288bc0c..b99a40e 100644 --- a/chrome/browser/chromeos/cros/network_library.cc +++ b/chrome/browser/chromeos/cros/network_library.cc @@ -39,6 +39,7 @@ #include "chrome/browser/chromeos/cros_settings.h" #include "chrome/browser/chromeos/login/user_manager.h" #include "chrome/browser/chromeos/network_login_observer.h" +#include "chrome/browser/net/browser_url_util.h" #include "chrome/common/time_format.h" #include "content/public/browser/browser_thread.h" #include "crypto/nss_util.h" // crypto::GetTPMTokenInfo() for 802.1X and VPN. @@ -122,6 +123,12 @@ const int kRecentPlanPaymentHours = 6; // If cellular device doesn't have SIM card, then retries are never used. const int kDefaultSimUnlockRetriesCount = 999; +// Redirect extension url for POST-ing url parameters to mobile account status +// sites. +const char kRedirectExtensionPage[] = + "chrome-extension://iadeocfgjdjdmpenejdbfeaocpbikmab/redirect.html?" + "autoPost=1"; + // List of cellular operators names that should have data roaming always enabled // to be able to connect to any network. const char* kAlwaysInRoamingOperators[] = { @@ -1201,6 +1208,20 @@ bool CellularNetwork::SupportsDataPlan() const { return !usage_url().empty() || !payment_url().empty(); } +GURL CellularNetwork::GetAccountInfoUrl() const { + if (!post_data_.length()) + return GURL(payment_url()); + + GURL base_url(kRedirectExtensionPage); + GURL temp_url = chrome_browser_net::AppendQueryParameter(base_url, + "post_data", + post_data_); + GURL redir_url = chrome_browser_net::AppendQueryParameter(temp_url, + "formUrl", + payment_url()); + return redir_url; +} + std::string CellularNetwork::GetNetworkTechnologyString() const { // No need to localize these cellular technology abbreviations. switch (network_technology_) { diff --git a/chrome/browser/chromeos/cros/network_library.h b/chrome/browser/chromeos/cros/network_library.h index 66d0134..7575ec9 100644 --- a/chrome/browser/chromeos/cros/network_library.h +++ b/chrome/browser/chromeos/cros/network_library.h @@ -19,6 +19,7 @@ #include "base/string16.h" #include "base/timer.h" #include "chrome/browser/chromeos/cros/network_ui_data.h" +#include "googleurl/src/gurl.h" #include "third_party/cros/chromeos_network.h" namespace base { @@ -1126,6 +1127,8 @@ class CellularNetwork : public WirelessNetwork { // Returns true if one of the usage_url_ / payment_url_ (or both) is defined. bool SupportsDataPlan() const; + // Return a URL for account info page. + GURL GetAccountInfoUrl() const; // Return a string representation of network technology. std::string GetNetworkTechnologyString() const; // Return a string representation of activation state. diff --git a/chrome/browser/resources/options/chromeos/internet_options.js b/chrome/browser/resources/options/chromeos/internet_options.js index 5186de8..7bd907b 100644 --- a/chrome/browser/resources/options/chromeos/internet_options.js +++ b/chrome/browser/resources/options/chromeos/internet_options.js @@ -95,7 +95,7 @@ cr.define('options', function() { OptionsPage.closeOverlay(); }); $('viewAccountDetails').addEventListener('click', function(event) { - chrome.send('buyDataPlan'); + chrome.send('showMorePlanInfo'); OptionsPage.closeOverlay(); }); $('cellularApnUseDefault').addEventListener('click', function(event) { diff --git a/chrome/browser/resources/options2/chromeos/internet_options.js b/chrome/browser/resources/options2/chromeos/internet_options.js index a983d66..04ed13a 100644 --- a/chrome/browser/resources/options2/chromeos/internet_options.js +++ b/chrome/browser/resources/options2/chromeos/internet_options.js @@ -95,7 +95,7 @@ cr.define('options', function() { OptionsPage.closeOverlay(); }); $('viewAccountDetails').addEventListener('click', function(event) { - chrome.send('buyDataPlan'); + chrome.send('showMorePlanInfo'); OptionsPage.closeOverlay(); }); $('cellularApnUseDefault').addEventListener('click', function(event) { diff --git a/chrome/browser/ui/webui/chromeos/mobile_setup_ui.cc b/chrome/browser/ui/webui/chromeos/mobile_setup_ui.cc index 36a1761..2c24a99 100644 --- a/chrome/browser/ui/webui/chromeos/mobile_setup_ui.cc +++ b/chrome/browser/ui/webui/chromeos/mobile_setup_ui.cc @@ -1392,8 +1392,7 @@ void MobileSetupHandler::StartActivationOnUIThread() { //////////////////////////////////////////////////////////////////////////////// MobileSetupUI::MobileSetupUI(content::WebUI* web_ui) - : WebUIController(web_ui), - frame_load_observer_(NULL) { + : WebUIController(web_ui) { chromeos::CellularNetwork* network = GetCellularNetwork(); std::string service_path = network ? network->service_path() : std::string(); web_ui->AddMessageHandler(new MobileSetupHandler(service_path)); @@ -1406,7 +1405,6 @@ MobileSetupUI::MobileSetupUI(content::WebUI* web_ui) } void MobileSetupUI::RenderViewCreated(RenderViewHost* host) { - // Destroyed by the corresponding RenderViewHost. - frame_load_observer_ = - new PortalFrameLoadObserver(AsWeakPtr(), host); + // Destroyed by the corresponding RenderViewHost + new PortalFrameLoadObserver(AsWeakPtr(), host); } diff --git a/chrome/browser/ui/webui/chromeos/mobile_setup_ui.h b/chrome/browser/ui/webui/chromeos/mobile_setup_ui.h index 08800c3..e55740f 100644 --- a/chrome/browser/ui/webui/chromeos/mobile_setup_ui.h +++ b/chrome/browser/ui/webui/chromeos/mobile_setup_ui.h @@ -9,7 +9,6 @@ #include "base/memory/weak_ptr.h" #include "content/public/browser/web_ui_controller.h" -class PortalFrameLoadObserver; // A custom WebUI that defines datasource for mobile setup registration page // that is used in Chrome OS activate modem and perform plan subscription tasks. class MobileSetupUI : public content::WebUIController, @@ -17,13 +16,10 @@ class MobileSetupUI : public content::WebUIController, public: explicit MobileSetupUI(content::WebUI* web_ui); - void OnObserverDeleted(); - private: // WebUIController overrides. virtual void RenderViewCreated(RenderViewHost* render_view_host) OVERRIDE; - PortalFrameLoadObserver* frame_load_observer_; DISALLOW_COPY_AND_ASSIGN(MobileSetupUI); }; 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 44f81df..266bb30a 100644 --- a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc +++ b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc @@ -584,7 +584,7 @@ void InternetOptionsHandler::RegisterMessages() { base::Bind(&InternetOptionsHandler::BuyDataPlanCallback, base::Unretained(this))); web_ui()->RegisterMessageCallback("showMorePlanInfo", - base::Bind(&InternetOptionsHandler::BuyDataPlanCallback, + base::Bind(&InternetOptionsHandler::ShowMorePlanInfoCallback, base::Unretained(this))); web_ui()->RegisterMessageCallback("setApn", base::Bind(&InternetOptionsHandler::SetApnCallback, @@ -623,6 +623,24 @@ void InternetOptionsHandler::DisableCellularCallback(const ListValue* args) { cros_->EnableCellularNetworkDevice(false); } +void InternetOptionsHandler::ShowMorePlanInfoCallback(const ListValue* args) { + if (!web_ui()) + return; + Browser* browser = BrowserList::FindBrowserWithFeature( + Profile::FromWebUI(web_ui()), Browser::FEATURE_TABSTRIP); + if (!browser) + return; + + const chromeos::CellularNetwork* cellular = cros_->cellular_network(); + if (!cellular) + return; + + browser->OpenURL(content::OpenURLParams( + cellular->GetAccountInfoUrl(), content::Referrer(), + NEW_FOREGROUND_TAB, + content::PAGE_TRANSITION_LINK, false)); +} + void InternetOptionsHandler::BuyDataPlanCallback(const ListValue* args) { if (!web_ui()) return; 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 e971a7b..0c9cf32 100644 --- a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.h +++ b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.h @@ -93,6 +93,7 @@ class InternetOptionsHandler void SetSimCardLockCallback(const base::ListValue* args); void ChangePinCallback(const base::ListValue* args); void ShareNetworkCallback(const base::ListValue* args); + void ShowMorePlanInfoCallback(const ListValue* args); // Populates the ui with the details of the given device path. This forces // an overlay to be displayed in the UI. 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 c11cdcf..c3fa6a8 100644 --- a/chrome/browser/ui/webui/options2/chromeos/internet_options_handler2.cc +++ b/chrome/browser/ui/webui/options2/chromeos/internet_options_handler2.cc @@ -586,7 +586,7 @@ void InternetOptionsHandler::RegisterMessages() { base::Bind(&InternetOptionsHandler::BuyDataPlanCallback, base::Unretained(this))); web_ui()->RegisterMessageCallback("showMorePlanInfo", - base::Bind(&InternetOptionsHandler::BuyDataPlanCallback, + base::Bind(&InternetOptionsHandler::ShowMorePlanInfoCallback, base::Unretained(this))); web_ui()->RegisterMessageCallback("setApn", base::Bind(&InternetOptionsHandler::SetApnCallback, @@ -625,6 +625,24 @@ void InternetOptionsHandler::DisableCellularCallback(const ListValue* args) { cros_->EnableCellularNetworkDevice(false); } +void InternetOptionsHandler::ShowMorePlanInfoCallback(const ListValue* args) { + if (!web_ui()) + return; + Browser* browser = BrowserList::FindBrowserWithFeature( + Profile::FromWebUI(web_ui()), Browser::FEATURE_TABSTRIP); + if (!browser) + return; + + const chromeos::CellularNetwork* cellular = cros_->cellular_network(); + if (!cellular) + return; + + browser->OpenURL(content::OpenURLParams( + cellular->GetAccountInfoUrl(), content::Referrer(), + NEW_FOREGROUND_TAB, + content::PAGE_TRANSITION_LINK, false)); +} + void InternetOptionsHandler::BuyDataPlanCallback(const ListValue* args) { if (!web_ui()) return; 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 a81e73f..a43276a 100644 --- a/chrome/browser/ui/webui/options2/chromeos/internet_options_handler2.h +++ b/chrome/browser/ui/webui/options2/chromeos/internet_options_handler2.h @@ -95,6 +95,7 @@ class InternetOptionsHandler void SetSimCardLockCallback(const base::ListValue* args); void ChangePinCallback(const base::ListValue* args); void ShareNetworkCallback(const base::ListValue* args); + void ShowMorePlanInfoCallback(const ListValue* args); // Populates the ui with the details of the given device path. This forces // an overlay to be displayed in the UI. |