From 64a0fd84a7a49e62e86d7b84c3c973fcd3374fc6 Mon Sep 17 00:00:00 2001 From: Corey Johnson & Nathan Sobo Date: Mon, 27 Aug 2012 18:39:12 -0500 Subject: [PATCH] WIP: sending reload message to render process on meta-r --- native/atom_cef_app.h | 6 ++++-- native/atom_cef_app.mm | 8 ++++++++ native/atom_cef_client.cpp | 32 ++++++++++++++++++++++++++++++++ native/atom_cef_client.h | 6 ++++++ native/atom_cef_client_mac.mm | 2 ++ native/atom_window_controller.mm | 1 + 6 files changed, 53 insertions(+), 2 deletions(-) diff --git a/native/atom_cef_app.h b/native/atom_cef_app.h index 7d0896862..1ce7edb79 100644 --- a/native/atom_cef_app.h +++ b/native/atom_cef_app.h @@ -9,13 +9,15 @@ class AtomCefApp : public CefApp, // CefApp methods virtual CefRefPtr GetRenderProcessHandler() OVERRIDE { return this; } - // CefRenderProcessHandler methods virtual void OnWebKitInitialized() OVERRIDE; virtual void OnContextCreated(CefRefPtr browser, CefRefPtr frame, CefRefPtr context) OVERRIDE; - + virtual bool OnProcessMessageReceived(CefRefPtr browser, + CefProcessId source_process, + CefRefPtr message) OVERRIDE; + IMPLEMENT_REFCOUNTING(AtomCefApp); }; diff --git a/native/atom_cef_app.mm b/native/atom_cef_app.mm index 34d25e597..deb11ac03 100644 --- a/native/atom_cef_app.mm +++ b/native/atom_cef_app.mm @@ -1,6 +1,7 @@ #include "atom_cef_app.h" #import "native/v8_extensions/native.h" #import "native/v8_extensions/onig_reg_exp.h" +#include void AtomCefApp::OnWebKitInitialized() { new NativeHandler(); @@ -22,3 +23,10 @@ void AtomCefApp::OnContextCreated(CefRefPtr browser, atom->SetValue("resourcePath", resourcePath, V8_PROPERTY_ATTRIBUTE_NONE); global->SetValue("atom", atom, V8_PROPERTY_ATTRIBUTE_NONE); } + +bool AtomCefApp::OnProcessMessageReceived(CefRefPtr browser, + CefProcessId source_process, + CefRefPtr message) { + std::cout << "MESSAGE RECEIVED ON RENDERER PROCESS:" << message->GetName().ToString(); + return true; +} \ No newline at end of file diff --git a/native/atom_cef_client.cpp b/native/atom_cef_client.cpp index f4503c17f..f5e0dee7e 100644 --- a/native/atom_cef_client.cpp +++ b/native/atom_cef_client.cpp @@ -8,6 +8,7 @@ #include "include/cef_process_util.h" #include "include/cef_runnable.h" #include "native/atom_cef_client.h" +#include "cef_v8.h" AtomCefClient::AtomCefClient(){ @@ -52,6 +53,37 @@ bool AtomCefClient::OnConsoleMessage(CefRefPtr browser, return true; } + +bool AtomCefClient::OnKeyEvent(CefRefPtr browser, + const CefKeyEvent& event, + CefEventHandle os_event) { + if (event.modifiers == KEY_META && event.character == 'r') { + browser->SendProcessMessage(PID_RENDERER, CefProcessMessage::Create("reload")); + } + +// if (type == KEYEVENT_RAWKEYDOWN && modifiers == KEY_META && code == 'R') { +// CefRefPtr context = _clientHandler->GetBrowser()->GetMainFrame()->GetV8Context(); +// CefRefPtr global = context->GetGlobal(); +// +// context->Enter(); +// CefRefPtr retval; +// CefRefPtr exception; +// CefV8ValueList arguments; +// +// global->GetValue("reload")->ExecuteFunction(global, arguments, retval, exception, true); +// if (exception.get()) { +// _clientHandler->GetBrowser()->ReloadIgnoreCache(); +// } +// context->Exit(); +// +// return YES; +// } +// if (type == KEYEVENT_RAWKEYDOWN && modifiers == (KEY_META | KEY_ALT) && code == 'I') { +// [self toggleDevTools]; +// return YES; +// } +} + void AtomCefClient::OnBeforeClose(CefRefPtr browser) { REQUIRE_UI_THREAD(); diff --git a/native/atom_cef_client.h b/native/atom_cef_client.h index ebe9ffd97..1ca42de70 100644 --- a/native/atom_cef_client.h +++ b/native/atom_cef_client.h @@ -65,6 +65,12 @@ class AtomCefClient : public CefClient, int line) OVERRIDE; + + // CefKeyboardHandler methods + virtual bool OnKeyEvent(CefRefPtr browser, + const CefKeyEvent& event, + CefEventHandle os_event) OVERRIDE; + // CefLifeSpanHandler methods virtual void OnBeforeClose(CefRefPtr browser) OVERRIDE; diff --git a/native/atom_cef_client_mac.mm b/native/atom_cef_client_mac.mm index a7ca2b67b..86cb7d087 100644 --- a/native/atom_cef_client_mac.mm +++ b/native/atom_cef_client_mac.mm @@ -2,3 +2,5 @@ #import "include/cef_browser.h" #import "include/cef_frame.h" #import "native/atom_cef_client.h" + + diff --git a/native/atom_window_controller.mm b/native/atom_window_controller.mm index af443e620..c4e5066ec 100644 --- a/native/atom_window_controller.mm +++ b/native/atom_window_controller.mm @@ -75,6 +75,7 @@ return YES; } + - (void)populateBrowserSettings:(CefBrowserSettings &)settings { CefString(&settings.default_encoding) = "UTF-8"; settings.remote_fonts_disabled = true;