2015-01-27 01:03:25 +01:00
|
|
|
// Copyright (c) 2015 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.
|
|
|
|
|
2015-01-31 01:55:56 +01:00
|
|
|
#ifndef CEF_TESTS_CEFCLIENT_BROWSER_ROOT_WINDOW_MANAGER_H_
|
|
|
|
#define CEF_TESTS_CEFCLIENT_BROWSER_ROOT_WINDOW_MANAGER_H_
|
|
|
|
#pragma once
|
2015-01-27 01:03:25 +01:00
|
|
|
|
|
|
|
#include <set>
|
|
|
|
|
|
|
|
#include "include/base/cef_scoped_ptr.h"
|
|
|
|
#include "include/cef_command_line.h"
|
2016-11-18 00:52:42 +01:00
|
|
|
#include "tests/cefclient/browser/root_window.h"
|
|
|
|
#include "tests/cefclient/browser/temp_window.h"
|
2015-01-27 01:03:25 +01:00
|
|
|
|
|
|
|
namespace client {
|
|
|
|
|
|
|
|
// Used to create/manage RootWindow instances. The methods of this class can be
|
|
|
|
// called from any browser process thread unless otherwise indicated.
|
|
|
|
class RootWindowManager : public RootWindow::Delegate {
|
|
|
|
public:
|
|
|
|
// If |terminate_when_all_windows_closed| is true quit the main message loop
|
|
|
|
// after all windows have closed.
|
|
|
|
explicit RootWindowManager(bool terminate_when_all_windows_closed);
|
|
|
|
|
|
|
|
// Create a new top-level native window that loads |url|.
|
|
|
|
// If |with_controls| is true the window will show controls.
|
|
|
|
// If |with_osr| is true the window will use off-screen rendering.
|
2015-02-03 00:18:16 +01:00
|
|
|
// If |bounds| is empty the default window size and location will be used.
|
2015-01-27 01:03:25 +01:00
|
|
|
// This method can be called from anywhere to create a new top-level window.
|
|
|
|
scoped_refptr<RootWindow> CreateRootWindow(
|
|
|
|
bool with_controls,
|
|
|
|
bool with_osr,
|
|
|
|
const CefRect& bounds,
|
|
|
|
const std::string& url);
|
|
|
|
|
|
|
|
// Create a new native popup window.
|
|
|
|
// If |with_controls| is true the window will show controls.
|
|
|
|
// If |with_osr| is true the window will use off-screen rendering.
|
2015-01-30 19:55:55 +01:00
|
|
|
// This method is called from ClientHandler::CreatePopupWindow() to
|
2015-01-27 01:03:25 +01:00
|
|
|
// create a new popup or DevTools window.
|
|
|
|
scoped_refptr<RootWindow> CreateRootWindowAsPopup(
|
|
|
|
bool with_controls,
|
|
|
|
bool with_osr,
|
|
|
|
const CefPopupFeatures& popupFeatures,
|
|
|
|
CefWindowInfo& windowInfo,
|
|
|
|
CefRefPtr<CefClient>& client,
|
|
|
|
CefBrowserSettings& settings);
|
|
|
|
|
|
|
|
// Returns the RootWindow associated with the specified browser ID. Must be
|
|
|
|
// called on the main thread.
|
|
|
|
scoped_refptr<RootWindow> GetWindowForBrowser(int browser_id);
|
|
|
|
|
|
|
|
// Close all existing windows. If |force| is true onunload handlers will not
|
|
|
|
// be executed.
|
|
|
|
void CloseAllWindows(bool force);
|
|
|
|
|
|
|
|
private:
|
|
|
|
// Allow deletion via scoped_ptr only.
|
|
|
|
friend struct base::DefaultDeleter<RootWindowManager>;
|
|
|
|
|
|
|
|
~RootWindowManager();
|
|
|
|
|
|
|
|
void OnRootWindowCreated(scoped_refptr<RootWindow> root_window);
|
|
|
|
|
|
|
|
// RootWindow::Delegate methods.
|
2015-02-14 00:17:08 +01:00
|
|
|
CefRefPtr<CefRequestContext> GetRequestContext(
|
|
|
|
RootWindow* root_window) OVERRIDE;
|
2016-01-19 21:09:01 +01:00
|
|
|
CefRefPtr<CefImage> GetDefaultWindowIcon() OVERRIDE;
|
2015-01-27 01:03:25 +01:00
|
|
|
void OnTest(RootWindow* root_window, int test_id) OVERRIDE;
|
|
|
|
void OnExit(RootWindow* root_window) OVERRIDE;
|
|
|
|
void OnRootWindowDestroyed(RootWindow* root_window) OVERRIDE;
|
|
|
|
|
|
|
|
const bool terminate_when_all_windows_closed_;
|
2015-02-14 00:17:08 +01:00
|
|
|
bool request_context_per_browser_;
|
2016-01-12 01:19:51 +01:00
|
|
|
bool request_context_shared_cache_;
|
2015-01-27 01:03:25 +01:00
|
|
|
|
|
|
|
// Existing root windows. Only accessed on the main thread.
|
|
|
|
typedef std::set<scoped_refptr<RootWindow> > RootWindowSet;
|
|
|
|
RootWindowSet root_windows_;
|
|
|
|
|
|
|
|
// Singleton window used as the temporary parent for popup browsers.
|
2015-01-30 20:08:53 +01:00
|
|
|
TempWindow temp_window_;
|
2015-01-27 01:03:25 +01:00
|
|
|
|
2015-09-09 16:05:39 +02:00
|
|
|
CefRefPtr<CefRequestContext> shared_request_context_;
|
2016-01-19 21:09:01 +01:00
|
|
|
CefRefPtr<CefImage> default_window_icon_;
|
2015-09-09 16:05:39 +02:00
|
|
|
|
2015-01-27 01:03:25 +01:00
|
|
|
DISALLOW_COPY_AND_ASSIGN(RootWindowManager);
|
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace client
|
|
|
|
|
2015-01-31 01:55:56 +01:00
|
|
|
#endif // CEF_TESTS_CEFCLIENT_BROWSER_ROOT_WINDOW_MANAGER_H_
|