mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2024-12-11 17:15:57 +01:00
34adee805c
git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@571 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
166 lines
5.5 KiB
C++
166 lines
5.5 KiB
C++
// Copyright (c) 2011 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_CLIENT_HANDLER_H_
|
|
#define CEF_TESTS_CEFCLIENT_CLIENT_HANDLER_H_
|
|
#pragma once
|
|
|
|
#include <map>
|
|
#include <string>
|
|
#include "include/cef_client.h"
|
|
#include "cefclient/util.h"
|
|
|
|
|
|
// Define this value to redirect all popup URLs to the main application browser
|
|
// window.
|
|
// #define TEST_REDIRECT_POPUP_URLS
|
|
|
|
|
|
// ClientHandler implementation.
|
|
class ClientHandler : public CefClient,
|
|
public CefLifeSpanHandler,
|
|
public CefLoadHandler,
|
|
public CefRequestHandler,
|
|
public CefDisplayHandler,
|
|
public CefGeolocationHandler {
|
|
public:
|
|
ClientHandler();
|
|
virtual ~ClientHandler();
|
|
|
|
// CefClient methods
|
|
virtual CefRefPtr<CefLifeSpanHandler> GetLifeSpanHandler() OVERRIDE {
|
|
return this;
|
|
}
|
|
virtual CefRefPtr<CefLoadHandler> GetLoadHandler() OVERRIDE {
|
|
return this;
|
|
}
|
|
virtual CefRefPtr<CefRequestHandler> GetRequestHandler() OVERRIDE {
|
|
return this;
|
|
}
|
|
virtual CefRefPtr<CefDisplayHandler> GetDisplayHandler() OVERRIDE {
|
|
return this;
|
|
}
|
|
virtual CefRefPtr<CefGeolocationHandler> GetGeolocationHandler() OVERRIDE {
|
|
return this;
|
|
}
|
|
|
|
// CefLifeSpanHandler methods
|
|
virtual bool OnBeforePopup(CefRefPtr<CefBrowser> parentBrowser,
|
|
const CefPopupFeatures& popupFeatures,
|
|
CefWindowInfo& windowInfo,
|
|
const CefString& url,
|
|
CefRefPtr<CefClient>& client,
|
|
CefBrowserSettings& settings) OVERRIDE;
|
|
virtual void OnAfterCreated(CefRefPtr<CefBrowser> browser) OVERRIDE;
|
|
virtual bool DoClose(CefRefPtr<CefBrowser> browser) OVERRIDE;
|
|
virtual void OnBeforeClose(CefRefPtr<CefBrowser> browser) OVERRIDE;
|
|
|
|
// CefLoadHandler methods
|
|
virtual void OnLoadStart(CefRefPtr<CefBrowser> browser,
|
|
CefRefPtr<CefFrame> frame) OVERRIDE;
|
|
virtual void OnLoadEnd(CefRefPtr<CefBrowser> browser,
|
|
CefRefPtr<CefFrame> frame,
|
|
int httpStatusCode) OVERRIDE;
|
|
virtual void OnLoadError(CefRefPtr<CefBrowser> browser,
|
|
CefRefPtr<CefFrame> frame,
|
|
ErrorCode errorCode,
|
|
const CefString& errorText,
|
|
const CefString& failedUrl) OVERRIDE;
|
|
|
|
// CefRequestHandler methods
|
|
virtual CefRefPtr<CefResourceHandler> GetResourceHandler(
|
|
CefRefPtr<CefBrowser> browser,
|
|
CefRefPtr<CefFrame> frame,
|
|
CefRefPtr<CefRequest> request) OVERRIDE;
|
|
|
|
// CefDisplayHandler methods
|
|
virtual void OnLoadingStateChange(CefRefPtr<CefBrowser> browser,
|
|
bool isLoading,
|
|
bool canGoBack,
|
|
bool canGoForward) OVERRIDE;
|
|
virtual void OnAddressChange(CefRefPtr<CefBrowser> browser,
|
|
CefRefPtr<CefFrame> frame,
|
|
const CefString& url) OVERRIDE;
|
|
virtual void OnTitleChange(CefRefPtr<CefBrowser> browser,
|
|
const CefString& title) OVERRIDE;
|
|
virtual bool OnConsoleMessage(CefRefPtr<CefBrowser> browser,
|
|
const CefString& message,
|
|
const CefString& source,
|
|
int line) OVERRIDE;
|
|
|
|
// CefGeolocationHandler methods
|
|
virtual void OnRequestGeolocationPermission(
|
|
CefRefPtr<CefBrowser> browser,
|
|
const CefString& requesting_url,
|
|
int request_id,
|
|
CefRefPtr<CefGeolocationCallback> callback) OVERRIDE;
|
|
|
|
void SetMainHwnd(CefWindowHandle hwnd);
|
|
CefWindowHandle GetMainHwnd() { return m_MainHwnd; }
|
|
void SetEditHwnd(CefWindowHandle hwnd);
|
|
void SetButtonHwnds(CefWindowHandle backHwnd,
|
|
CefWindowHandle forwardHwnd,
|
|
CefWindowHandle reloadHwnd,
|
|
CefWindowHandle stopHwnd);
|
|
|
|
CefRefPtr<CefBrowser> GetBrowser() { return m_Browser; }
|
|
int GetBrowserId() { return m_BrowserId; }
|
|
|
|
std::string GetLogFile();
|
|
|
|
void SetLastDownloadFile(const std::string& fileName);
|
|
std::string GetLastDownloadFile();
|
|
|
|
// Send a notification to the application. Notifications should not block the
|
|
// caller.
|
|
enum NotificationType {
|
|
NOTIFY_CONSOLE_MESSAGE,
|
|
NOTIFY_DOWNLOAD_COMPLETE,
|
|
NOTIFY_DOWNLOAD_ERROR,
|
|
};
|
|
void SendNotification(NotificationType type);
|
|
void CloseMainWindow();
|
|
|
|
void ShowDevTools();
|
|
void CloseDevTools();
|
|
|
|
protected:
|
|
void SetLoading(bool isLoading);
|
|
void SetNavState(bool canGoBack, bool canGoForward);
|
|
|
|
// The child browser window
|
|
CefRefPtr<CefBrowser> m_Browser;
|
|
|
|
// The main frame window handle
|
|
CefWindowHandle m_MainHwnd;
|
|
|
|
// The child browser id
|
|
int m_BrowserId;
|
|
|
|
// The edit window handle
|
|
CefWindowHandle m_EditHwnd;
|
|
|
|
// The button window handles
|
|
CefWindowHandle m_BackHwnd;
|
|
CefWindowHandle m_ForwardHwnd;
|
|
CefWindowHandle m_StopHwnd;
|
|
CefWindowHandle m_ReloadHwnd;
|
|
|
|
// Support for logging.
|
|
std::string m_LogFile;
|
|
|
|
// Support for downloading files.
|
|
std::string m_LastDownloadFile;
|
|
|
|
// True if a form element currently has focus
|
|
bool m_bFormElementHasFocus;
|
|
|
|
// Include the default reference counting implementation.
|
|
IMPLEMENT_REFCOUNTING(ClientHandler);
|
|
// Include the default locking implementation.
|
|
IMPLEMENT_LOCKING(ClientHandler);
|
|
};
|
|
|
|
#endif // CEF_TESTS_CEFCLIENT_CLIENT_HANDLER_H_
|