Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / login / ui / simple_web_view_dialog_browsertest.cc
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/compiler_specific.h"
6 #include "base/logging.h"
7 #include "base/macros.h"
8 #include "chrome/browser/chromeos/login/login_manager_test.h"
9 #include "chrome/browser/chromeos/login/ui/captive_portal_view.h"
10 #include "chrome/browser/chromeos/login/ui/captive_portal_window_proxy.h"
11 #include "chrome/browser/chromeos/login/ui/login_display_host_impl.h"
12 #include "chrome/browser/chromeos/login/ui/simple_web_view_dialog.h"
13 #include "chrome/browser/chromeos/login/ui/webui_login_view.h"
14 #include "content/public/browser/interstitial_page.h"
15 #include "content/public/browser/interstitial_page_delegate.h"
16 #include "ui/views/controls/webview/webview.h"
17
18 namespace chromeos {
19
20 namespace {
21
22 class StubDelegate : public CaptivePortalWindowProxyDelegate {
23  public:
24   StubDelegate() {}
25   virtual ~StubDelegate() {}
26   virtual void OnPortalDetected() override {}
27
28  private:
29   DISALLOW_COPY_AND_ASSIGN(StubDelegate);
30 };
31
32 class InterstitialPageDelegate : public content::InterstitialPageDelegate {
33  public:
34   explicit InterstitialPageDelegate(content::WebContents* web_contents) {
35     content::InterstitialPage* page = content::InterstitialPage::Create(
36         web_contents, true, GURL("http://foo"), this);
37     page->Show();
38   }
39
40   virtual ~InterstitialPageDelegate() {}
41
42  private:
43   // InterstitialPageDelegate implementation:
44   virtual std::string GetHTMLContents() override { return "HTML Contents"; }
45
46   DISALLOW_COPY_AND_ASSIGN(InterstitialPageDelegate);
47 };
48
49 }  // namespace
50
51 class SimpleWebViewDialogTest : public LoginManagerTest {
52  public:
53   SimpleWebViewDialogTest(): LoginManagerTest(false) {}
54   virtual ~SimpleWebViewDialogTest() {}
55
56   InterstitialPageDelegate* CreateDelegate(CaptivePortalWindowProxy* proxy) {
57     SimpleWebViewDialog* dialog = proxy->captive_portal_view_for_testing();
58     CHECK(dialog) << "CaptivePortalView is not initialized";
59     return new InterstitialPageDelegate(dialog->web_view_->web_contents());
60   }
61
62  private:
63   DISALLOW_COPY_AND_ASSIGN(SimpleWebViewDialogTest);
64 };
65
66 IN_PROC_BROWSER_TEST_F(SimpleWebViewDialogTest, Interstitial) {
67   content::WebContents* web_contents = LoginDisplayHostImpl::default_host()
68                                            ->GetWebUILoginView()
69                                            ->GetWebContents();
70   StubDelegate delegate;
71   CaptivePortalWindowProxy proxy(&delegate, web_contents);
72   proxy.Show();
73
74   // Delegate creates a page and passes himself to it. Page owns the
75   // delegate and will be destroyed by the end of the test.
76   CreateDelegate(&proxy);
77 }
78
79 }  // namespace chromeos