| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" | 5 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/hash_tables.h" | 10 #include "base/hash_tables.h" |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 59 std::string SanitizeEmail(const std::string& email) { | 59 std::string SanitizeEmail(const std::string& email) { |
| 60 std::string sanitized(email); | 60 std::string sanitized(email); |
| 61 | 61 |
| 62 // Apply a default domain if necessary. | 62 // Apply a default domain if necessary. |
| 63 if (sanitized.find('@') == std::string::npos) | 63 if (sanitized.find('@') == std::string::npos) |
| 64 sanitized += kDefaultDomain; | 64 sanitized += kDefaultDomain; |
| 65 | 65 |
| 66 return sanitized; | 66 return sanitized; |
| 67 } | 67 } |
| 68 | 68 |
| 69 // The Task posted to PostTaskAndReply in StartClearingDnsCache on the IO |
| 70 // thread. |
| 71 void ClearDnsCache(IOThread* io_thread) { |
| 72 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 73 if (browser_shutdown::IsTryingToQuit()) |
| 74 return; |
| 75 |
| 76 io_thread->globals()->dnsrr_resolver.get()->OnIPAddressChanged(); |
| 77 } |
| 78 |
| 69 } // namespace | 79 } // namespace |
| 70 | 80 |
| 71 namespace chromeos { | 81 namespace chromeos { |
| 72 | 82 |
| 73 // Class which observes network state changes and calls registerd callbacks. | 83 // Class which observes network state changes and calls registered callbacks. |
| 74 // State is considered changed if connection or the active network has been | 84 // State is considered changed if connection or the active network has been |
| 75 // changed. Also, it answers to the requests about current network state. | 85 // changed. Also, it answers to the requests about current network state. |
| 76 class NetworkStateInformer | 86 class NetworkStateInformer |
| 77 : public chromeos::NetworkLibrary::NetworkManagerObserver { | 87 : public chromeos::NetworkLibrary::NetworkManagerObserver { |
| 78 public: | 88 public: |
| 79 explicit NetworkStateInformer(WebUI* web_ui); | 89 explicit NetworkStateInformer(WebUI* web_ui); |
| 80 virtual ~NetworkStateInformer(); | 90 virtual ~NetworkStateInformer(); |
| 81 | 91 |
| 82 // Adds observer's callback to be called when network state has been changed. | 92 // Adds observer's callback to be called when network state has been changed. |
| 83 void AddObserver(const std::string& callback); | 93 void AddObserver(const std::string& callback); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 96 | 106 |
| 97 bool UpdateState(chromeos::NetworkLibrary* cros); | 107 bool UpdateState(chromeos::NetworkLibrary* cros); |
| 98 | 108 |
| 99 base::hash_set<std::string> observers_; | 109 base::hash_set<std::string> observers_; |
| 100 std::string active_network_; | 110 std::string active_network_; |
| 101 std::string network_name_; | 111 std::string network_name_; |
| 102 State state_; | 112 State state_; |
| 103 WebUI* web_ui_; | 113 WebUI* web_ui_; |
| 104 }; | 114 }; |
| 105 | 115 |
| 106 // Clears DNS cache on IO thread. | |
| 107 class ClearDnsCacheTaskOnIOThread : public Task { | |
| 108 public: | |
| 109 ClearDnsCacheTaskOnIOThread(Task* callback, IOThread* io_thread) | |
| 110 : callback_(callback), io_thread_(io_thread) { | |
| 111 } | |
| 112 virtual ~ClearDnsCacheTaskOnIOThread() {} | |
| 113 | |
| 114 // Task overrides. | |
| 115 virtual void Run() OVERRIDE { | |
| 116 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | |
| 117 if (browser_shutdown::IsTryingToQuit()) | |
| 118 return; | |
| 119 | |
| 120 io_thread_->globals()->dnsrr_resolver.get()->OnIPAddressChanged(); | |
| 121 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, callback_); | |
| 122 } | |
| 123 | |
| 124 private: | |
| 125 Task* callback_; | |
| 126 IOThread* io_thread_; | |
| 127 DISALLOW_COPY_AND_ASSIGN(ClearDnsCacheTaskOnIOThread); | |
| 128 }; | |
| 129 | |
| 130 // NetworkStateInformer implementation ----------------------------------------- | 116 // NetworkStateInformer implementation ----------------------------------------- |
| 131 | 117 |
| 132 NetworkStateInformer::NetworkStateInformer(WebUI* web_ui) : web_ui_(web_ui) { | 118 NetworkStateInformer::NetworkStateInformer(WebUI* web_ui) : web_ui_(web_ui) { |
| 133 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); | 119 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); |
| 134 UpdateState(cros); | 120 UpdateState(cros); |
| 135 cros->AddNetworkManagerObserver(this); | 121 cros->AddNetworkManagerObserver(this); |
| 136 } | 122 } |
| 137 | 123 |
| 138 NetworkStateInformer::~NetworkStateInformer() { | 124 NetworkStateInformer::~NetworkStateInformer() { |
| 139 CrosLibrary::Get()->GetNetworkLibrary()-> | 125 CrosLibrary::Get()->GetNetworkLibrary()-> |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 : delegate_(WebUILoginDisplay::GetInstance()), | 178 : delegate_(WebUILoginDisplay::GetInstance()), |
| 193 show_on_init_(false), | 179 show_on_init_(false), |
| 194 oobe_ui_(false), | 180 oobe_ui_(false), |
| 195 dns_cleared_(false), | 181 dns_cleared_(false), |
| 196 dns_clear_task_running_(false), | 182 dns_clear_task_running_(false), |
| 197 cookies_cleared_(false), | 183 cookies_cleared_(false), |
| 198 extension_driven_( | 184 extension_driven_( |
| 199 CommandLine::ForCurrentProcess()->HasSwitch( | 185 CommandLine::ForCurrentProcess()->HasSwitch( |
| 200 switches::kWebUILogin)), | 186 switches::kWebUILogin)), |
| 201 cookie_remover_(NULL), | 187 cookie_remover_(NULL), |
| 202 ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) { | 188 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { |
| 203 delegate_->SetWebUIHandler(this); | 189 delegate_->SetWebUIHandler(this); |
| 204 } | 190 } |
| 205 | 191 |
| 206 SigninScreenHandler::~SigninScreenHandler() { | 192 SigninScreenHandler::~SigninScreenHandler() { |
| 207 method_factory_.RevokeAll(); | 193 weak_factory_.InvalidateWeakPtrs(); |
| 208 if (cookie_remover_) | 194 if (cookie_remover_) |
| 209 cookie_remover_->RemoveObserver(this); | 195 cookie_remover_->RemoveObserver(this); |
| 210 } | 196 } |
| 211 | 197 |
| 212 void SigninScreenHandler::GetLocalizedStrings( | 198 void SigninScreenHandler::GetLocalizedStrings( |
| 213 DictionaryValue* localized_strings) { | 199 DictionaryValue* localized_strings) { |
| 214 localized_strings->SetString("signinScreenTitle", | 200 localized_strings->SetString("signinScreenTitle", |
| 215 l10n_util::GetStringUTF16(IDS_SIGNIN_SCREEN_TITLE)); | 201 l10n_util::GetStringUTF16(IDS_SIGNIN_SCREEN_TITLE)); |
| 216 localized_strings->SetString("passwordHint", | 202 localized_strings->SetString("passwordHint", |
| 217 l10n_util::GetStringUTF16(IDS_LOGIN_POD_EMPTY_PASSWORD_TEXT)); | 203 l10n_util::GetStringUTF16(IDS_LOGIN_POD_EMPTY_PASSWORD_TEXT)); |
| (...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 609 | 595 |
| 610 void SigninScreenHandler::HandleCreateAccount(const base::ListValue* args) { | 596 void SigninScreenHandler::HandleCreateAccount(const base::ListValue* args) { |
| 611 delegate_->CreateAccount(); | 597 delegate_->CreateAccount(); |
| 612 } | 598 } |
| 613 | 599 |
| 614 void SigninScreenHandler::StartClearingDnsCache() { | 600 void SigninScreenHandler::StartClearingDnsCache() { |
| 615 if (dns_clear_task_running_ || !g_browser_process->io_thread()) | 601 if (dns_clear_task_running_ || !g_browser_process->io_thread()) |
| 616 return; | 602 return; |
| 617 | 603 |
| 618 dns_cleared_ = false; | 604 dns_cleared_ = false; |
| 619 ClearDnsCacheTaskOnIOThread* clear_dns_task = new ClearDnsCacheTaskOnIOThread( | 605 BrowserThread::PostTaskAndReply( |
| 620 method_factory_.NewRunnableMethod(&SigninScreenHandler::OnDnsCleared), | 606 BrowserThread::IO, FROM_HERE, |
| 621 g_browser_process->io_thread()); | 607 base::Bind(&ClearDnsCache, g_browser_process->io_thread()), |
| 622 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, clear_dns_task); | 608 base::Bind(&SigninScreenHandler::OnDnsCleared, |
| 609 weak_factory_.GetWeakPtr())); |
| 623 dns_clear_task_running_ = true; | 610 dns_clear_task_running_ = true; |
| 624 } | 611 } |
| 625 | 612 |
| 626 void SigninScreenHandler::StartClearingCookies() { | 613 void SigninScreenHandler::StartClearingCookies() { |
| 627 cookies_cleared_ = false; | 614 cookies_cleared_ = false; |
| 628 if (cookie_remover_) | 615 if (cookie_remover_) |
| 629 cookie_remover_->RemoveObserver(this); | 616 cookie_remover_->RemoveObserver(this); |
| 630 | 617 |
| 631 cookie_remover_ = new BrowsingDataRemover( | 618 cookie_remover_ = new BrowsingDataRemover( |
| 632 Profile::FromBrowserContext(web_ui_->tab_contents()->browser_context()), | 619 Profile::FromBrowserContext(web_ui_->tab_contents()->browser_context()), |
| 633 BrowsingDataRemover::EVERYTHING, | 620 BrowsingDataRemover::EVERYTHING, |
| 634 base::Time()); | 621 base::Time()); |
| 635 cookie_remover_->AddObserver(this); | 622 cookie_remover_->AddObserver(this); |
| 636 cookie_remover_->Remove(BrowsingDataRemover::REMOVE_SITE_DATA); | 623 cookie_remover_->Remove(BrowsingDataRemover::REMOVE_SITE_DATA); |
| 637 } | 624 } |
| 638 | 625 |
| 639 } // namespace chromeos | 626 } // namespace chromeos |
| OLD | NEW |