Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1012)

Unified Diff: chrome/browser/chromeos/login/captive_portal_window_proxy.cc

Issue 15780006: Added bowser test for Captive Portal Window. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix. Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/chromeos/login/captive_portal_window_proxy.h ('k') | chrome/chrome_tests.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/login/captive_portal_window_proxy.cc
diff --git a/chrome/browser/chromeos/login/captive_portal_window_proxy.cc b/chrome/browser/chromeos/login/captive_portal_window_proxy.cc
index 28c376d2f9b85aa8acb46e069ec5fc88e778bfd7..9a5789d149902c860b1d68a69f1a455bdf4b365e 100644
--- a/chrome/browser/chromeos/login/captive_portal_window_proxy.cc
+++ b/chrome/browser/chromeos/login/captive_portal_window_proxy.cc
@@ -23,34 +23,22 @@ CaptivePortalWindowProxy::CaptivePortalWindowProxy(Delegate* delegate,
: delegate_(delegate),
widget_(NULL),
parent_(parent) {
+ DCHECK(GetState() == STATE_IDLE);
}
CaptivePortalWindowProxy::~CaptivePortalWindowProxy() {
- if (widget_) {
- widget_->RemoveObserver(this);
- widget_->Close();
- }
+ if (!widget_)
+ return;
+ DCHECK(GetState() == STATE_DISPLAYED);
+ widget_->RemoveObserver(this);
+ widget_->Close();
}
void CaptivePortalWindowProxy::ShowIfRedirected() {
- if (widget_) {
- // Invalid state as when widget is created (Show())
- // CaptivePortalView ownership is transferred to it.
- if (captive_portal_view_.get()) {
- NOTREACHED();
- }
- // Dialog is already shown, no need to reload.
+ if (GetState() != STATE_IDLE)
return;
- }
-
- // Dialog is not initialized yet.
- if (!captive_portal_view_.get()) {
- captive_portal_view_.reset(
- new CaptivePortalView(ProfileHelper::GetSigninProfile(), this));
- }
-
- // If dialog has been created (but not shown) previously, force reload.
- captive_portal_view_->StartLoad();
+ InitCaptivePortalView();
+ DCHECK(GetState() == STATE_WAITING_FOR_REDIRECTION);
}
void CaptivePortalWindowProxy::Show() {
@@ -60,10 +48,10 @@ void CaptivePortalWindowProxy::Show() {
return;
}
- if (!captive_portal_view_.get() || widget_) {
- // Dialog is already shown, do nothing.
+ if (GetState() == STATE_DISPLAYED) // Dialog is already shown, do nothing.
return;
- }
+
+ InitCaptivePortalView();
CaptivePortalView* captive_portal_view = captive_portal_view_.release();
widget_ = views::Widget::CreateWindowWithParent(
@@ -77,18 +65,18 @@ void CaptivePortalWindowProxy::Show() {
widget_->AddObserver(this);
widget_->Show();
+ DCHECK(GetState() == STATE_DISPLAYED);
}
void CaptivePortalWindowProxy::Close() {
- if (widget_) {
+ if (GetState() == STATE_DISPLAYED)
widget_->Close();
- } else {
- captive_portal_view_.reset();
- }
+ captive_portal_view_.reset();
}
void CaptivePortalWindowProxy::OnRedirected() {
- Show();
+ if (GetState() == STATE_WAITING_FOR_REDIRECTION)
+ Show();
delegate_->OnPortalDetected();
}
@@ -96,11 +84,39 @@ void CaptivePortalWindowProxy::OnOriginalURLLoaded() {
Close();
}
-void CaptivePortalWindowProxy::OnWidgetDestroying(views::Widget* widget) {
+void CaptivePortalWindowProxy::OnWidgetClosing(views::Widget* widget) {
+ DCHECK(GetState() == STATE_DISPLAYED);
DCHECK(widget == widget_);
- DCHECK(captive_portal_view_.get() == NULL);
+
widget->RemoveObserver(this);
widget_ = NULL;
+
+ DCHECK(GetState() == STATE_IDLE);
+}
+
+void CaptivePortalWindowProxy::InitCaptivePortalView() {
+ DCHECK(GetState() == STATE_IDLE ||
+ GetState() == STATE_WAITING_FOR_REDIRECTION);
+ if (!captive_portal_view_.get()) {
+ captive_portal_view_.reset(
+ new CaptivePortalView(ProfileHelper::GetSigninProfile(), this));
+ }
+ captive_portal_view_->StartLoad();
+}
+
+CaptivePortalWindowProxy::State CaptivePortalWindowProxy::GetState() const {
+ if (widget_ == NULL) {
+ if (captive_portal_view_.get() == NULL)
+ return STATE_IDLE;
+ else
+ return STATE_WAITING_FOR_REDIRECTION;
+ } else {
+ if (captive_portal_view_.get() == NULL)
+ return STATE_DISPLAYED;
+ else
+ NOTREACHED();
+ }
+ return STATE_UNKNOWN;
}
} // namespace chromeos
« no previous file with comments | « chrome/browser/chromeos/login/captive_portal_window_proxy.h ('k') | chrome/chrome_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698