// Copyright (c) 2013 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_CEFSIMPLE_SIMPLE_HANDLER_H_ #define CEF_TESTS_CEFSIMPLE_SIMPLE_HANDLER_H_ #include #include "include/cef_client.h" class SimpleHandler : public CefClient, public CefDisplayHandler, public CefLifeSpanHandler, public CefLoadHandler { public: explicit SimpleHandler(bool is_alloy_style); ~SimpleHandler() override; // Provide access to the single global instance of this object. static SimpleHandler* GetInstance(); // CefClient methods: CefRefPtr GetDisplayHandler() override { return this; } CefRefPtr GetLifeSpanHandler() override { return this; } CefRefPtr GetLoadHandler() override { return this; } // CefDisplayHandler methods: void OnTitleChange(CefRefPtr browser, const CefString& title) override; // CefLifeSpanHandler methods: void OnAfterCreated(CefRefPtr browser) override; bool DoClose(CefRefPtr browser) override; void OnBeforeClose(CefRefPtr browser) override; // CefLoadHandler methods: void OnLoadError(CefRefPtr browser, CefRefPtr frame, ErrorCode errorCode, const CefString& errorText, const CefString& failedUrl) override; void ShowMainWindow(); // Request that all existing browser windows close. void CloseAllBrowsers(bool force_close); bool IsClosing() const { return is_closing_; } private: // Platform-specific implementation. void PlatformTitleChange(CefRefPtr browser, const CefString& title); void PlatformShowWindow(CefRefPtr browser); // True if this client is Alloy style, otherwise Chrome style. const bool is_alloy_style_; // List of existing browser windows. Only accessed on the CEF UI thread. typedef std::list> BrowserList; BrowserList browser_list_; bool is_closing_ = false; // Include the default reference counting implementation. IMPLEMENT_REFCOUNTING(SimpleHandler); }; #endif // CEF_TESTS_CEFSIMPLE_SIMPLE_HANDLER_H_