// Copyright (c) 2016 The Chromium Embedded Framework Authors. All rights // reserved. Use of this source code is governed by a BSD-style license that // can be found in the LICENSE file. #ifndef CEF_TESTS_CEFCLIENT_BROWSER_ROOT_WINDOW_VIEWS_H_ #define CEF_TESTS_CEFCLIENT_BROWSER_ROOT_WINDOW_VIEWS_H_ #pragma once #include #include "include/base/cef_scoped_ptr.h" #include "tests/cefclient/browser/client_handler.h" #include "tests/cefclient/browser/root_window.h" #include "tests/cefclient/browser/views_window.h" namespace client { // Views framework implementation of a top-level window in the browser process. // The methods of this class must be called on the main thread unless otherwise // indicated. class RootWindowViews : public RootWindow, public ClientHandler::Delegate, public ViewsWindow::Delegate { public: // Constructor may be called on any thread. RootWindowViews(); ~RootWindowViews(); // RootWindow methods: void Init(RootWindow::Delegate* delegate, const RootWindowConfig& config, const CefBrowserSettings& settings) OVERRIDE; void InitAsPopup(RootWindow::Delegate* delegate, bool with_controls, bool with_osr, const CefPopupFeatures& popupFeatures, CefWindowInfo& windowInfo, CefRefPtr& client, CefBrowserSettings& settings) OVERRIDE; void Show(ShowMode mode) OVERRIDE; void Hide() OVERRIDE; void SetBounds(int x, int y, size_t width, size_t height) OVERRIDE; void Close(bool force) OVERRIDE; void SetDeviceScaleFactor(float device_scale_factor) OVERRIDE; float GetDeviceScaleFactor() const OVERRIDE; CefRefPtr GetBrowser() const OVERRIDE; ClientWindowHandle GetWindowHandle() const OVERRIDE; bool WithWindowlessRendering() const OVERRIDE { return false; } bool WithExtension() const OVERRIDE; void OnExtensionsChanged(const ExtensionSet& extensions) OVERRIDE; // ViewsWindow::Delegate methods: bool WithControls() OVERRIDE; bool WithExtension() OVERRIDE; bool InitiallyHidden() OVERRIDE; CefRefPtr GetParentWindow() OVERRIDE; CefRect GetWindowBounds() OVERRIDE; scoped_refptr GetImageCache() OVERRIDE; void OnViewsWindowCreated(CefRefPtr window) OVERRIDE; void OnViewsWindowDestroyed(CefRefPtr window) OVERRIDE; void OnViewsWindowActivated(CefRefPtr window) OVERRIDE; ViewsWindow::Delegate* GetDelegateForPopup( CefRefPtr client) OVERRIDE; void CreateExtensionWindow(CefRefPtr extension, const CefRect& source_bounds, CefRefPtr parent_window, const base::Closure& close_callback) OVERRIDE; void OnTest(int test_id) OVERRIDE; void OnExit() OVERRIDE; protected: // ClientHandler::Delegate methods: void OnBrowserCreated(CefRefPtr browser) OVERRIDE; void OnBrowserClosing(CefRefPtr browser) OVERRIDE; void OnBrowserClosed(CefRefPtr browser) OVERRIDE; void OnSetAddress(const std::string& url) OVERRIDE; void OnSetTitle(const std::string& title) OVERRIDE; void OnSetFavicon(CefRefPtr image) OVERRIDE; void OnSetFullscreen(bool fullscreen) OVERRIDE; void OnAutoResize(const CefSize& new_size) OVERRIDE; void OnSetLoadingState(bool isLoading, bool canGoBack, bool canGoForward) OVERRIDE; void OnSetDraggableRegions( const std::vector& regions) OVERRIDE; void OnTakeFocus(bool next) OVERRIDE; void OnBeforeContextMenu(CefRefPtr model) OVERRIDE; private: void CreateClientHandler(const std::string& url); void InitOnMainThread(const CefBrowserSettings& settings, const std::string& startup_url); void CreateViewsWindow(const CefBrowserSettings& settings, const std::string& startup_url, CefRefPtr request_context, const ImageCache::ImageSet& images); void NotifyViewsWindowDestroyed(); void NotifyViewsWindowActivated(); void NotifyDestroyedIfDone(); // After initialization all members are only accessed on the main thread // unless otherwise indicated. // Members set during initialization. bool with_controls_; bool with_extension_; bool initially_hidden_; CefRefPtr parent_window_; bool is_popup_; CefRect initial_bounds_; base::Closure close_callback_; bool position_on_resize_; CefRefPtr client_handler_; bool initialized_; bool window_destroyed_; bool browser_destroyed_; CefRefPtr browser_; // Only accessed on the browser process UI thread. CefRefPtr window_; ExtensionSet pending_extensions_; scoped_refptr image_cache_; DISALLOW_COPY_AND_ASSIGN(RootWindowViews); }; } // namespace client #endif // CEF_TESTS_CEFCLIENT_BROWSER_ROOT_WINDOW_VIEWS_H_