@@ -50,6 +50,7 @@ bool ShellRenderProcessObserver::OnControlMessageReceived(
50
50
bool handled = true ;
51
51
IPC_BEGIN_MESSAGE_MAP (ShellRenderProcessObserver, message)
52
52
IPC_MESSAGE_HANDLER (ShellViewMsg_Open, OnOpen)
53
+ IPC_MESSAGE_HANDLER (ShellViewMsg_Reopen, OnReopen)
53
54
IPC_MESSAGE_HANDLER (ShellViewMsg_ClearCache, OnClearCache)
54
55
IPC_MESSAGE_UNHANDLED (handled = false )
55
56
IPC_END_MESSAGE_MAP ()
@@ -88,6 +89,25 @@ void ShellRenderProcessObserver::OnOpen(const std::string& path) {
88
89
}
89
90
}
90
91
92
+ void ShellRenderProcessObserver::OnReopen () {
93
+ v8::HandleScope handle_scope;
94
+
95
+ // the App object is stored in process["_nw_app"].
96
+ v8::Local<v8::Object> process = node::g_context->Global ()->Get (
97
+ node::process_symbol)->ToObject ();
98
+ v8::Local<v8::String> app_symbol = v8::String::NewSymbol (" _nw_app" );
99
+ if (process->Has (app_symbol)) {
100
+ // process["_nw_app"].emit(path).
101
+ v8::Local<v8::Object> app = process->Get (app_symbol)->ToObject ();
102
+ v8::Local<v8::Function> emit = v8::Local<v8::Function>::Cast (
103
+ app->Get (v8::String::New (" emit" )));
104
+ v8::Local<v8::Value> argv[] = {
105
+ v8::String::New (" reopen" )
106
+ };
107
+ emit->Call (app, 1 , argv);
108
+ }
109
+ }
110
+
91
111
void ShellRenderProcessObserver::OnClearCache () {
92
112
if (webkit_initialized_)
93
113
WebKit::WebCache::clear ();
0 commit comments