13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#ifndef CONTENT_SHELL_BROWSER_SHELL_H_ 53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#define CONTENT_SHELL_BROWSER_SHELL_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/callback_forward.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/strings/string_piece.h" 148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "build/build_config.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents_delegate.h" 164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "content/public/browser/web_contents_observer.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ipc/ipc_channel.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/native_widget_types.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/size.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(TOOLKIT_GTK) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <gtk/gtk.h> 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/gtk/gtk_signal.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _GtkToolItem GtkToolItem; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_ANDROID) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/android/scoped_java_ref.h" 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#elif defined(USE_AURA) 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS) 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace wm { 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class WMTestHelper; 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif // defined(OS_CHROMEOS) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views { 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Widget; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ViewsDelegate; 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif // defined(USE_AURA) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GURL; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 438bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#if defined(USE_AURA) 448bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class ShellAuraPlatformData; 458bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif 468bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserContext; 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ShellDevToolsFrontend; 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ShellJavaScriptDialogManager; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SiteInstance; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebContents; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This represents one window of the Content Shell, i.e. all the UI including 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// buttons and url bar, as well as the web content area. 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Shell : public WebContentsDelegate, 564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public WebContentsObserver { 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) static const int kDefaultTestWindowWidthDip; 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) static const int kDefaultTestWindowHeightDip; 6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~Shell(); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void LoadURL(const GURL& url); 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void LoadURLForFrame(const GURL& url, const std::string& frame_name); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void GoBackOrForward(int offset); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Reload(); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Stop(); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateNavigationControls(); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Close(); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowDevTools(); 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void CloseDevTools(); 72fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch#if (defined(OS_WIN) && !defined(USE_AURA)) || \ 73fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch defined(TOOLKIT_GTK) || defined(OS_MACOSX) 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Resizes the main window to the given dimensions. 75f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void SizeTo(const gfx::Size& content_size); 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Do one time initialization at application startup. 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void Initialize(); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static Shell* CreateNewWindow(BrowserContext* browser_context, 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& url, 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SiteInstance* site_instance, 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int routing_id, 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::Size& initial_size); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the Shell object corresponding to the given RenderViewHost. 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static Shell* FromRenderViewHost(RenderViewHost* rvh); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the currently open windows. 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static std::vector<Shell*>& windows() { return windows_; } 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Closes all windows and returns. This runs a message loop. 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void CloseAllWindows(); 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Used for content_browsertests. Called once. 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void SetShellCreatedCallback( 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Callback<void(Shell*)> shell_created_callback); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContents* web_contents() const { return web_contents_.get(); } 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::NativeWindow window() { return window_; } 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Public to be called by an ObjC bridge object. 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ActionPerformed(int control); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void URLEntered(std::string url_string); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_ANDROID) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Registers the Android Java to native methods. 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool Register(JNIEnv* env); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // WebContentsDelegate 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual WebContents* OpenURLFromTab(WebContents* source, 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const OpenURLParams& params) OVERRIDE; 1154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void AddNewContents(WebContents* source, 1164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) WebContents* new_contents, 1174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) WindowOpenDisposition disposition, 1184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const gfx::Rect& initial_pos, 1194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool user_gesture, 1204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool* was_blocked) OVERRIDE; 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void LoadingStateChanged(WebContents* source) OVERRIDE; 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void LoadProgressChanged(WebContents* source, 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double progress) OVERRIDE; 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void ToggleFullscreenModeForTab(WebContents* web_contents, 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool enter_fullscreen) OVERRIDE; 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool IsFullscreenForTabOrPending( 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const WebContents* web_contents) const OVERRIDE; 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void RequestToLockMouse(WebContents* web_contents, 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool user_gesture, 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool last_unlocked_by_target) OVERRIDE; 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void CloseContents(WebContents* source) OVERRIDE; 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool CanOverscrollContent() const OVERRIDE; 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DidNavigateMainFramePostCommit( 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContents* web_contents) OVERRIDE; 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual JavaScriptDialogManager* GetJavaScriptDialogManager() OVERRIDE; 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleKeyboardEvent( 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContents* source, 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const NativeWebKeyboardEvent& event) OVERRIDE; 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool AddMessageToConsole(WebContents* source, 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32 level, 145a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& message, 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32 line_no, 147a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& source_id) OVERRIDE; 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RendererUnresponsive(WebContents* source) OVERRIDE; 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void ActivateContents(WebContents* contents) OVERRIDE; 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void DeactivateContents(WebContents* contents) OVERRIDE; 151a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch virtual void WorkerCrashed(WebContents* source) OVERRIDE; 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum UIControl { 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BACK_BUTTON, 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FORWARD_BUTTON, 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) STOP_BUTTON 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) class DevToolsWebContentsObserver; 16190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit Shell(WebContents* web_contents); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Helper to create a new Shell given a newly created WebContents. 165b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) static Shell* CreateShell(WebContents* web_contents, 166b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) const gfx::Size& initial_size); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Helper for one time initialization of application 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void PlatformInitialize(const gfx::Size& default_window_size); 170f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Helper for one time deinitialization of platform specific state. 171f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static void PlatformExit(); 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Adjust the size when Blink sends 0 for width and/or height. 1744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // This happens when Blink requests a default-sized window. 1754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) static gfx::Size AdjustWindowSize(const gfx::Size& initial_size); 1764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // All the methods that begin with Platform need to be implemented by the 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // platform specific Shell implementation. 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called from the destructor to let each platform do any necessary cleanup. 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void PlatformCleanUp(); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates the main window GUI. 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void PlatformCreateWindow(int width, int height); 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Links the WebContents into the newly created window. 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void PlatformSetContents(); 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Resize the content area and GUI. 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void PlatformResizeSubViews(); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Enable/disable a button. 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void PlatformEnableUIControl(UIControl control, bool is_enabled); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Updates the url in the url bar. 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void PlatformSetAddressBarURL(const GURL& url); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets whether the spinner is spinning. 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void PlatformSetIsLoading(bool loading); 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set the title of shell window 194a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void PlatformSetTitle(const base::string16& title); 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_ANDROID) 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void PlatformToggleFullscreenModeForTab(WebContents* web_contents, 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool enter_fullscreen); 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool PlatformIsFullscreenForTabOrPending( 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const WebContents* web_contents) const; 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::NativeView GetContentView(); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // WebContentsObserver 2054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void TitleWasSet(NavigationEntry* entry, bool explicit_set) OVERRIDE; 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void OnDevToolsWebContentsDestroyed(); 20890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) && !defined(USE_AURA) 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static ATOM RegisterWindowClass(); 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static LRESULT CALLBACK EditWndProc(HWND, UINT, WPARAM, LPARAM); 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(TOOLKIT_GTK) 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHROMEGTK_CALLBACK_0(Shell, void, OnBackButtonClicked); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHROMEGTK_CALLBACK_0(Shell, void, OnForwardButtonClicked); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHROMEGTK_CALLBACK_0(Shell, void, OnReloadButtonClicked); 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHROMEGTK_CALLBACK_0(Shell, void, OnStopButtonClicked); 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHROMEGTK_CALLBACK_0(Shell, void, OnURLEntryActivate); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHROMEGTK_CALLBACK_0(Shell, gboolean, OnWindowDestroyed); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHROMEG_CALLBACK_3(Shell, gboolean, OnCloseWindowKeyPressed, GtkAccelGroup*, 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GObject*, guint, GdkModifierType); 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHROMEG_CALLBACK_3(Shell, gboolean, OnNewWindowKeyPressed, GtkAccelGroup*, 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GObject*, guint, GdkModifierType); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHROMEG_CALLBACK_3(Shell, gboolean, OnHighlightURLView, GtkAccelGroup*, 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GObject*, guint, GdkModifierType); 227a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) CHROMEG_CALLBACK_3(Shell, gboolean, OnReloadKeyPressed, GtkAccelGroup*, 228a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) GObject*, guint, GdkModifierType); 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<ShellJavaScriptDialogManager> dialog_manager_; 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<WebContents> web_contents_; 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) scoped_ptr<DevToolsWebContentsObserver> devtools_observer_; 2362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ShellDevToolsFrontend* devtools_frontend_; 2372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool is_fullscreen_; 2392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::NativeWindow window_; 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::NativeEditView url_edit_view_; 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 243f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) gfx::Size content_size_; 244f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) && !defined(USE_AURA) 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WNDPROC default_edit_wnd_proc_; 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static HINSTANCE instance_handle_; 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(TOOLKIT_GTK) 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GtkWidget* vbox_; 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GtkToolItem* back_button_; 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GtkToolItem* forward_button_; 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GtkToolItem* reload_button_; 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GtkToolItem* stop_button_; 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GtkWidget* spinner_; 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GtkToolItem* spinner_item_; 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) int ui_elements_height_; // height of menubar, toolbar, etc. 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_ANDROID) 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::android::ScopedJavaGlobalRef<jobject> java_object_; 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(USE_AURA) 2632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS) 264f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static wm::WMTestHelper* wm_test_helper_; 2652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 2668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#if defined(TOOLKIT_VIEWS) 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static views::ViewsDelegate* views_delegate_; 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::Widget* window_widget_; 2708bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#else // defined(TOOLKIT_VIEWS) 2711e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) static ShellAuraPlatformData* platform_; 2728bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif // defined(TOOLKIT_VIEWS) 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool headless_; 2762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // A container of all the open windows. We use a vector so we can keep track 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // of ordering. 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static std::vector<Shell*> windows_; 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static base::Callback<void(Shell*)> shell_created_callback_; 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // True if the destructur of Shell should post a quit closure on the current 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // message loop if the destructed Shell object was the last one. 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool quit_message_loop_; 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2903551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif // CONTENT_SHELL_BROWSER_SHELL_H_ 291