Break out AtomCefRenderProcessHandler so it's only included in the helper app

This means that none of the extension code has to be compiled into the browser app, which just seems cleaner.
This commit is contained in:
Nathan Sobo
2012-08-28 11:55:17 -05:00
parent a4a87917ba
commit f0dbe5db94
5 changed files with 88 additions and 72 deletions

View File

@@ -59,7 +59,6 @@
'native/atom_application.h',
'native/atom_application.mm',
'native/atom_cef_app.h',
'native/atom_cef_app.mm',
'native/atom_window_controller.h',
'native/atom_window_controller.mm',
'native/atom_cef_client_mac.mm',
@@ -68,12 +67,6 @@
'native/util.h',
'native/path_watcher.mm',
'native/path_watcher.h',
'native/v8_extensions/native.mm',
'native/v8_extensions/native.h',
'native/v8_extensions/onig_reg_exp.mm',
'native/v8_extensions/onig_reg_exp.h',
'native/v8_extensions/atom.mm',
'native/v8_extensions/atom.h',
],
'mac_bundle_resources': [
'native/mac/atom.icns',
@@ -284,7 +277,8 @@
'libraries': [ 'native/frameworks/CocoaOniguruma.framework' ],
'sources': [
'native/atom_cef_app.h',
'native/atom_cef_app.mm',
'native/atom_cef_render_process_handler.h',
'native/atom_cef_render_process_handler.mm',
'native/process_helper_mac.cpp',
'native/util.h',
'native/path_watcher.mm',

View File

@@ -4,22 +4,21 @@
#include "include/cef_app.h"
class AtomCefApp : public CefApp,
public CefRenderProcessHandler {
#ifdef PROCESS_HELPER_APP
#include "atom_cef_render_process_handler.h"
#endif
class AtomCefApp : public CefApp {
// CefApp methods
virtual CefRefPtr<CefRenderProcessHandler> GetRenderProcessHandler() OVERRIDE { return this; }
// CefRenderProcessHandler methods
virtual void OnWebKitInitialized() OVERRIDE;
virtual void OnContextCreated(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) OVERRIDE;
virtual bool OnProcessMessageReceived(CefRefPtr<CefBrowser> browser,
CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) OVERRIDE;
void Reload(CefRefPtr<CefBrowser> browser);
virtual CefRefPtr<CefRenderProcessHandler> GetRenderProcessHandler() OVERRIDE {
#ifdef PROCESS_HELPER_APP
return CefRefPtr<CefRenderProcessHandler>(new AtomCefRenderProcessHandler);
#else
return NULL;
#endif
}
IMPLEMENT_REFCOUNTING(AtomCefApp);
};

View File

@@ -1,50 +0,0 @@
#include "atom_cef_app.h"
#import "native/v8_extensions/atom.h"
#import "native/v8_extensions/native.h"
#import "native/v8_extensions/onig_reg_exp.h"
#include <iostream>
void AtomCefApp::OnWebKitInitialized() {
new v8_extensions::Atom();
new v8_extensions::Native();
new v8_extensions::OnigRegExp();
}
void AtomCefApp::OnContextCreated(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) {
#ifdef RESOURCE_PATH
CefRefPtr<CefV8Value> resourcePath = CefV8Value::CreateString(RESOURCE_PATH);
#else
CefRefPtr<CefV8Value> resourcePath = CefV8Value::CreateString([[[NSBundle mainBundle] resourcePath] UTF8String]);
#endif
CefRefPtr<CefV8Value> global = context->GetGlobal();
CefRefPtr<CefV8Value> atom = global->GetValue("atom");
atom->SetValue("resourcePath", resourcePath, V8_PROPERTY_ATTRIBUTE_NONE);
}
bool AtomCefApp::OnProcessMessageReceived(CefRefPtr<CefBrowser> browser,
CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) {
if (message->GetName().ToString() == "reload") {
Reload(browser);
}
return true;
}
void AtomCefApp::Reload(CefRefPtr<CefBrowser> browser) {
CefRefPtr<CefV8Context> context = browser->GetMainFrame()->GetV8Context();
CefRefPtr<CefV8Value> global = context->GetGlobal();
context->Enter();
CefV8ValueList arguments;
CefRefPtr<CefV8Value> reloadFunction = global->GetValue("reload");
// reloadFunction->ExecuteFunction(global, arguments);
// if (reloadFunction->HasException()) {
browser->ReloadIgnoreCache();
// }
context->Exit();
}

View File

@@ -0,0 +1,23 @@
#ifndef ATOM_CEF_RENDER_PROCESS_HANDLER_H_
#define ATOM_CEF_RENDER_PROCESS_HANDLER_H_
#pragma once
#include "include/cef_app.h"
class AtomCefRenderProcessHandler : public CefRenderProcessHandler {
virtual void OnWebKitInitialized() OVERRIDE;
virtual void OnContextCreated(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) OVERRIDE;
virtual bool OnProcessMessageReceived(CefRefPtr<CefBrowser> browser,
CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) OVERRIDE;
void Reload(CefRefPtr<CefBrowser> browser);
IMPLEMENT_REFCOUNTING(AtomCefRenderProcessHandler);
};
#endif // ATOM_CEF_RENDER_PROCESS_HANDLER_H_

View File

@@ -0,0 +1,50 @@
#include "atom_cef_render_process_handler.h"
#import "native/v8_extensions/atom.h"
#import "native/v8_extensions/native.h"
#import "native/v8_extensions/onig_reg_exp.h"
#include <iostream>
void AtomCefRenderProcessHandler::OnWebKitInitialized() {
new v8_extensions::Atom();
new v8_extensions::Native();
new v8_extensions::OnigRegExp();
}
void AtomCefRenderProcessHandler::OnContextCreated(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) {
#ifdef RESOURCE_PATH
CefRefPtr<CefV8Value> resourcePath = CefV8Value::CreateString(RESOURCE_PATH);
#else
CefRefPtr<CefV8Value> resourcePath = CefV8Value::CreateString([[[NSBundle mainBundle] resourcePath] UTF8String]);
#endif
CefRefPtr<CefV8Value> global = context->GetGlobal();
CefRefPtr<CefV8Value> atom = global->GetValue("atom");
atom->SetValue("resourcePath", resourcePath, V8_PROPERTY_ATTRIBUTE_NONE);
}
bool AtomCefRenderProcessHandler::OnProcessMessageReceived(CefRefPtr<CefBrowser> browser,
CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) {
if (message->GetName().ToString() == "reload") {
Reload(browser);
}
return true;
}
void AtomCefRenderProcessHandler::Reload(CefRefPtr<CefBrowser> browser) {
CefRefPtr<CefV8Context> context = browser->GetMainFrame()->GetV8Context();
CefRefPtr<CefV8Value> global = context->GetGlobal();
context->Enter();
CefV8ValueList arguments;
CefRefPtr<CefV8Value> reloadFunction = global->GetValue("reload");
// reloadFunction->ExecuteFunction(global, arguments);
// if (reloadFunction->HasException()) {
browser->ReloadIgnoreCache();
// }
context->Exit();
}