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

Side by Side Diff: content/shell/shell.h

Issue 23316003: [content shell] move browser process stuff into browser/ subdir (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/shell/notify_done_forwarder.cc ('k') | content/shell/shell.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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.
4 #ifndef CONTENT_SHELL_SHELL_H_
5 #define CONTENT_SHELL_SHELL_H_
6
7
8 #include <vector>
9
10 #include "base/basictypes.h"
11 #include "base/callback_forward.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "base/strings/string_piece.h"
14 #include "content/public/browser/notification_observer.h"
15 #include "content/public/browser/notification_registrar.h"
16 #include "content/public/browser/web_contents_delegate.h"
17 #include "ipc/ipc_channel.h"
18 #include "ui/gfx/native_widget_types.h"
19 #include "ui/gfx/size.h"
20
21 #if defined(TOOLKIT_GTK)
22 #include <gtk/gtk.h>
23 #include "ui/base/gtk/gtk_signal.h"
24
25 typedef struct _GtkToolItem GtkToolItem;
26 #elif defined(OS_ANDROID)
27 #include "base/android/scoped_java_ref.h"
28 #elif defined(USE_AURA)
29 #if defined(OS_CHROMEOS)
30 namespace content {
31 class MinimalShell;
32 }
33 #endif
34 namespace views {
35 class Widget;
36 class ViewsDelegate;
37 }
38 #endif
39
40 class GURL;
41 namespace content {
42
43 class BrowserContext;
44 class ShellDevToolsFrontend;
45 class ShellJavaScriptDialogManager;
46 class SiteInstance;
47 class WebContents;
48
49 // This represents one window of the Content Shell, i.e. all the UI including
50 // buttons and url bar, as well as the web content area.
51 class Shell : public WebContentsDelegate,
52 public NotificationObserver {
53 public:
54 static const int kDefaultTestWindowWidthDip;
55 static const int kDefaultTestWindowHeightDip;
56
57 virtual ~Shell();
58
59 void LoadURL(const GURL& url);
60 void LoadURLForFrame(const GURL& url, const std::string& frame_name);
61 void GoBackOrForward(int offset);
62 void Reload();
63 void Stop();
64 void UpdateNavigationControls();
65 void Close();
66 void ShowDevTools();
67 void CloseDevTools();
68 #if (defined(OS_WIN) && !defined(USE_AURA)) || \
69 defined(TOOLKIT_GTK) || defined(OS_MACOSX)
70 // Resizes the main window to the given dimensions.
71 void SizeTo(int width, int height);
72 #endif
73
74 // Do one time initialization at application startup.
75 static void Initialize();
76
77 static Shell* CreateNewWindow(BrowserContext* browser_context,
78 const GURL& url,
79 SiteInstance* site_instance,
80 int routing_id,
81 const gfx::Size& initial_size);
82
83 // Returns the Shell object corresponding to the given RenderViewHost.
84 static Shell* FromRenderViewHost(RenderViewHost* rvh);
85
86 // Returns the currently open windows.
87 static std::vector<Shell*>& windows() { return windows_; }
88
89 // Closes all windows and returns. This runs a message loop.
90 static void CloseAllWindows();
91
92 // Closes all windows and exits.
93 static void PlatformExit();
94
95 // Used for content_browsertests. Called once.
96 static void SetShellCreatedCallback(
97 base::Callback<void(Shell*)> shell_created_callback);
98
99 WebContents* web_contents() const { return web_contents_.get(); }
100 gfx::NativeWindow window() { return window_; }
101
102 #if defined(OS_MACOSX)
103 // Public to be called by an ObjC bridge object.
104 void ActionPerformed(int control);
105 void URLEntered(std::string url_string);
106 #elif defined(OS_ANDROID)
107 // Registers the Android Java to native methods.
108 static bool Register(JNIEnv* env);
109 #endif
110
111 // WebContentsDelegate
112 virtual WebContents* OpenURLFromTab(WebContents* source,
113 const OpenURLParams& params) OVERRIDE;
114 virtual void LoadingStateChanged(WebContents* source) OVERRIDE;
115 #if defined(OS_ANDROID)
116 virtual void LoadProgressChanged(WebContents* source,
117 double progress) OVERRIDE;
118 #endif
119 virtual void ToggleFullscreenModeForTab(WebContents* web_contents,
120 bool enter_fullscreen) OVERRIDE;
121 virtual bool IsFullscreenForTabOrPending(
122 const WebContents* web_contents) const OVERRIDE;
123 virtual void RequestToLockMouse(WebContents* web_contents,
124 bool user_gesture,
125 bool last_unlocked_by_target) OVERRIDE;
126 virtual void CloseContents(WebContents* source) OVERRIDE;
127 virtual bool CanOverscrollContent() const OVERRIDE;
128 virtual void WebContentsCreated(WebContents* source_contents,
129 int64 source_frame_id,
130 const string16& frame_name,
131 const GURL& target_url,
132 WebContents* new_contents) OVERRIDE;
133 virtual void DidNavigateMainFramePostCommit(
134 WebContents* web_contents) OVERRIDE;
135 virtual JavaScriptDialogManager* GetJavaScriptDialogManager() OVERRIDE;
136 #if defined(OS_MACOSX)
137 virtual void HandleKeyboardEvent(
138 WebContents* source,
139 const NativeWebKeyboardEvent& event) OVERRIDE;
140 #endif
141 virtual bool AddMessageToConsole(WebContents* source,
142 int32 level,
143 const string16& message,
144 int32 line_no,
145 const string16& source_id) OVERRIDE;
146 virtual void RendererUnresponsive(WebContents* source) OVERRIDE;
147 virtual void ActivateContents(WebContents* contents) OVERRIDE;
148 virtual void DeactivateContents(WebContents* contents) OVERRIDE;
149 virtual void WorkerCrashed(WebContents* source) OVERRIDE;
150
151 private:
152 enum UIControl {
153 BACK_BUTTON,
154 FORWARD_BUTTON,
155 STOP_BUTTON
156 };
157
158 class DevToolsWebContentsObserver;
159
160 explicit Shell(WebContents* web_contents);
161
162 // Helper to create a new Shell given a newly created WebContents.
163 static Shell* CreateShell(WebContents* web_contents,
164 const gfx::Size& initial_size);
165
166 // Helper for one time initialization of application
167 static void PlatformInitialize(const gfx::Size& default_window_size);
168
169 // All the methods that begin with Platform need to be implemented by the
170 // platform specific Shell implementation.
171 // Called from the destructor to let each platform do any necessary cleanup.
172 void PlatformCleanUp();
173 // Creates the main window GUI.
174 void PlatformCreateWindow(int width, int height);
175 // Links the WebContents into the newly created window.
176 void PlatformSetContents();
177 // Resize the content area and GUI.
178 void PlatformResizeSubViews();
179 // Enable/disable a button.
180 void PlatformEnableUIControl(UIControl control, bool is_enabled);
181 // Updates the url in the url bar.
182 void PlatformSetAddressBarURL(const GURL& url);
183 // Sets whether the spinner is spinning.
184 void PlatformSetIsLoading(bool loading);
185 // Set the title of shell window
186 void PlatformSetTitle(const string16& title);
187 #if defined(OS_ANDROID)
188 void PlatformToggleFullscreenModeForTab(WebContents* web_contents,
189 bool enter_fullscreen);
190 bool PlatformIsFullscreenForTabOrPending(
191 const WebContents* web_contents) const;
192 #endif
193
194 gfx::NativeView GetContentView();
195
196 // NotificationObserver
197 virtual void Observe(int type,
198 const NotificationSource& source,
199 const NotificationDetails& details) OVERRIDE;
200
201 void OnDevToolsWebContentsDestroyed();
202
203 #if defined(OS_WIN) && !defined(USE_AURA)
204 static ATOM RegisterWindowClass();
205 static LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
206 static LRESULT CALLBACK EditWndProc(HWND, UINT, WPARAM, LPARAM);
207 #elif defined(TOOLKIT_GTK)
208 CHROMEGTK_CALLBACK_0(Shell, void, OnBackButtonClicked);
209 CHROMEGTK_CALLBACK_0(Shell, void, OnForwardButtonClicked);
210 CHROMEGTK_CALLBACK_0(Shell, void, OnReloadButtonClicked);
211 CHROMEGTK_CALLBACK_0(Shell, void, OnStopButtonClicked);
212 CHROMEGTK_CALLBACK_0(Shell, void, OnURLEntryActivate);
213 CHROMEGTK_CALLBACK_0(Shell, gboolean, OnWindowDestroyed);
214
215 CHROMEG_CALLBACK_3(Shell, gboolean, OnCloseWindowKeyPressed, GtkAccelGroup*,
216 GObject*, guint, GdkModifierType);
217 CHROMEG_CALLBACK_3(Shell, gboolean, OnNewWindowKeyPressed, GtkAccelGroup*,
218 GObject*, guint, GdkModifierType);
219 CHROMEG_CALLBACK_3(Shell, gboolean, OnHighlightURLView, GtkAccelGroup*,
220 GObject*, guint, GdkModifierType);
221 CHROMEG_CALLBACK_3(Shell, gboolean, OnReloadKeyPressed, GtkAccelGroup*,
222 GObject*, guint, GdkModifierType);
223 #endif
224
225 scoped_ptr<ShellJavaScriptDialogManager> dialog_manager_;
226
227 scoped_ptr<WebContents> web_contents_;
228
229 scoped_ptr<DevToolsWebContentsObserver> devtools_observer_;
230 ShellDevToolsFrontend* devtools_frontend_;
231
232 bool is_fullscreen_;
233
234 gfx::NativeWindow window_;
235 gfx::NativeEditView url_edit_view_;
236
237 // Notification manager
238 NotificationRegistrar registrar_;
239
240 #if defined(OS_WIN) && !defined(USE_AURA)
241 WNDPROC default_edit_wnd_proc_;
242 static HINSTANCE instance_handle_;
243 #elif defined(TOOLKIT_GTK)
244 GtkWidget* vbox_;
245
246 GtkToolItem* back_button_;
247 GtkToolItem* forward_button_;
248 GtkToolItem* reload_button_;
249 GtkToolItem* stop_button_;
250
251 GtkWidget* spinner_;
252 GtkToolItem* spinner_item_;
253
254 int content_width_;
255 int content_height_;
256 int ui_elements_height_; // height of menubar, toolbar, etc.
257 #elif defined(OS_ANDROID)
258 base::android::ScopedJavaGlobalRef<jobject> java_object_;
259 #elif defined(USE_AURA)
260 #if defined(OS_CHROMEOS)
261 static content::MinimalShell* minimal_shell_;
262 #endif
263 static views::ViewsDelegate* views_delegate_;
264
265 views::Widget* window_widget_;
266 #elif defined(OS_MACOSX)
267 int content_width_;
268 int content_height_;
269 #endif
270
271 bool headless_;
272
273 // A container of all the open windows. We use a vector so we can keep track
274 // of ordering.
275 static std::vector<Shell*> windows_;
276
277 static base::Callback<void(Shell*)> shell_created_callback_;
278
279 // True if the destructur of Shell should post a quit closure on the current
280 // message loop if the destructed Shell object was the last one.
281 static bool quit_message_loop_;
282 };
283
284 } // namespace content
285
286 #endif // CONTENT_SHELL_SHELL_H_
OLDNEW
« no previous file with comments | « content/shell/notify_done_forwarder.cc ('k') | content/shell/shell.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698