forked from cztomczak/cefpython
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcefpython_app.h
More file actions
138 lines (102 loc) · 4.74 KB
/
cefpython_app.h
File metadata and controls
138 lines (102 loc) · 4.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
// Copyright (c) 2012-2014 The CEF Python authors. All rights reserved.
// License: New BSD License.
// Website: http://code.google.com/p/cefpython/
#pragma once
#include "include/cef_app.h"
#include "include/cef_print_handler.h"
#if defined(OS_LINUX)
#include "print_handler_gtk.h"
#endif
#include <map>
// CefPythonApp class is instantiated in subprocess and in
// cefpython.pyx for the browser process, so the code is shared.
// Using printf() in CefRenderProcessHandler won't work, use
// the DebugLog() function instead, it will write the message
// to the "debug.log" file.
class CefPythonApp :
public CefApp,
public CefBrowserProcessHandler,
public CefRenderProcessHandler {
protected:
std::map<int, CefRefPtr<CefDictionaryValue> > javascriptBindings_;
std::string commandLineString_;
CefRefPtr<CefPrintHandler> print_handler_;
public:
CefPythonApp();
void OnBeforeCommandLineProcessing(
const CefString& process_type,
CefRefPtr<CefCommandLine> command_line) override;
void OnRegisterCustomSchemes(
CefRefPtr<CefSchemeRegistrar> registrar) override;
CefRefPtr<CefResourceBundleHandler> GetResourceBundleHandler()
override;
CefRefPtr<CefBrowserProcessHandler> GetBrowserProcessHandler()
override;
CefRefPtr<CefRenderProcessHandler> GetRenderProcessHandler()
override;
// ---------------------------------------------------------------------------
// CefBrowserProcessHandler
// ---------------------------------------------------------------------------
void OnContextInitialized() override;
void OnBeforeChildProcessLaunch(
CefRefPtr<CefCommandLine> command_line) override;
void OnRenderProcessThreadCreated(
CefRefPtr<CefListValue> extra_info) override;
CefRefPtr<CefPrintHandler> GetPrintHandler() override;
void OnScheduleMessagePumpWork(int64 delay_ms) override;
// ---------------------------------------------------------------------------
// CefRenderProcessHandler
// ---------------------------------------------------------------------------
void OnRenderThreadCreated(CefRefPtr<CefListValue> extra_info)
override;
void OnWebKitInitialized()
override;
void OnBrowserCreated(CefRefPtr<CefBrowser> browser)
override;
void OnBrowserDestroyed(CefRefPtr<CefBrowser> browser)
override;
bool OnBeforeNavigation(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
cef_navigation_type_t navigation_type,
bool is_redirect)
override;
void OnContextCreated(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context)
override;
void OnContextReleased(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context)
override;
void OnUncaughtException(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context,
CefRefPtr<CefV8Exception> exception,
CefRefPtr<CefV8StackTrace> stackTrace)
override;
void OnFocusedNodeChanged(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefDOMNode> node)
override;
bool OnProcessMessageReceived(CefRefPtr<CefBrowser> browser,
CefProcessId source_process,
CefRefPtr<CefProcessMessage> message)
override;
// ---------------------------------------------------------------------------
// Javascript bindings
// ---------------------------------------------------------------------------
void SetJavascriptBindings(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefDictionaryValue> data);
CefRefPtr<CefDictionaryValue> GetJavascriptBindings(
CefRefPtr<CefBrowser> browser);
void RemoveJavascriptBindings(CefRefPtr<CefBrowser> browser);
bool BindedFunctionExists(CefRefPtr<CefBrowser> browser,
const CefString& funcName);
void DoJavascriptBindingsForBrowser(CefRefPtr<CefBrowser> browser);
void DoJavascriptBindingsForFrame(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context);
private:
IMPLEMENT_REFCOUNTING(CefPythonApp);
};