1 // Copyright (c) 2012 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.
5 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SIMPLE_WEB_VIEW_DIALOG_H_
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_SIMPLE_WEB_VIEW_DIALOG_H_
9 #include "base/memory/scoped_ptr.h"
10 #include "chrome/browser/command_updater_delegate.h"
11 #include "chrome/browser/ui/toolbar/toolbar_model_delegate.h"
12 #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
13 #include "content/public/browser/page_navigator.h"
14 #include "content/public/browser/web_contents_delegate.h"
15 #include "ui/views/controls/button/image_button.h"
16 #include "ui/views/widget/widget_delegate.h"
31 class StubBubbleModelDelegate
;
33 // View class which shows the light version of the toolbar and the web contents.
34 // Light version of the toolbar includes back, forward buttons and location
35 // bar. Location bar is shown in read only mode, because this view is designed
36 // to be used for sign in to captive portal on login screen (when Browser
38 class SimpleWebViewDialog
: public views::ButtonListener
,
39 public views::WidgetDelegateView
,
40 public LocationBarView::Delegate
,
41 public ToolbarModelDelegate
,
42 public CommandUpdaterDelegate
,
43 public content::PageNavigator
,
44 public content::WebContentsDelegate
{
46 explicit SimpleWebViewDialog(Profile
* profile
);
47 virtual ~SimpleWebViewDialog();
50 void StartLoad(const GURL
& gurl
);
52 // Inits view. Should be attached to a Widget before call.
55 // Overridden from views::View:
56 virtual void Layout() OVERRIDE
;
58 // Overridden from views::WidgetDelegate:
59 virtual views::View
* GetContentsView() OVERRIDE
;
60 virtual views::View
* GetInitiallyFocusedView() OVERRIDE
;
62 // Implements views::ButtonListener:
63 virtual void ButtonPressed(views::Button
* sender
,
64 const ui::Event
& event
) OVERRIDE
;
66 // Implements content::PageNavigator:
67 virtual content::WebContents
* OpenURL(
68 const content::OpenURLParams
& params
) OVERRIDE
;
70 // Implements content::WebContentsDelegate:
71 virtual void LoadingStateChanged(content::WebContents
* source
) OVERRIDE
;
73 // Implements LocationBarView::Delegate:
74 virtual void NavigationStateChanged(const content::WebContents
* source
,
75 unsigned changed_flags
) OVERRIDE
;
76 virtual content::WebContents
* GetWebContents() OVERRIDE
;
77 virtual ToolbarModel
* GetToolbarModel() OVERRIDE
;
78 virtual const ToolbarModel
* GetToolbarModel() const OVERRIDE
;
79 virtual InstantController
* GetInstant() OVERRIDE
;
80 virtual views::Widget
* CreateViewsBubble(
81 views::BubbleDelegateView
* bubble_delegate
) OVERRIDE
;
82 virtual PageActionImageView
* CreatePageActionImageView(
83 LocationBarView
* owner
,
84 ExtensionAction
* action
) OVERRIDE
;
85 virtual ContentSettingBubbleModelDelegate
*
86 GetContentSettingBubbleModelDelegate() OVERRIDE
;
87 virtual void ShowWebsiteSettings(content::WebContents
* web_contents
,
89 const content::SSLStatus
& ssl
) OVERRIDE
;
91 // Implements ToolbarModelDelegate:
92 virtual content::WebContents
* GetActiveWebContents() const OVERRIDE
;
94 // Implements CommandUpdaterDelegate:
95 virtual void ExecuteCommandWithDisposition(
97 WindowOpenDisposition
) OVERRIDE
;
101 void UpdateButtons();
102 void UpdateReload(bool is_loading
, bool force
);
105 scoped_ptr
<ToolbarModel
> toolbar_model_
;
106 scoped_ptr
<CommandUpdater
> command_updater_
;
109 views::ImageButton
* back_
;
110 views::ImageButton
* forward_
;
111 ReloadButton
* reload_
;
112 LocationBarView
* location_bar_
;
113 views::WebView
* web_view_
;
115 // Contains |web_view_| while it isn't owned by the view.
116 scoped_ptr
<views::WebView
> web_view_container_
;
118 scoped_ptr
<StubBubbleModelDelegate
> bubble_model_delegate_
;
120 DISALLOW_COPY_AND_ASSIGN(SimpleWebViewDialog
);
123 } // namespace chromeos
125 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_SIMPLE_WEB_VIEW_DIALOG_H_