Skip to content

Commit a2ae616

Browse files
committed
[API] Start to make API use IPC implementation.
1 parent 5565638 commit a2ae616

8 files changed

Lines changed: 23 additions & 150 deletions

nw.gypi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
'<(DEPTH)',
4545
],
4646
'sources': [
47+
'src/api/api_messages.cc',
48+
'src/api/api_messages.h',
4749
'src/api/dispatcher.cc',
4850
'src/api/dispatcher.h',
4951
'src/api/utils.cc',
@@ -126,8 +128,6 @@
126128
'src/renderer/shell_content_renderer_client.h',
127129
'src/renderer/shell_render_process_observer.cc',
128130
'src/renderer/shell_render_process_observer.h',
129-
'src/renderer/shell_render_view_observer.cc',
130-
'src/renderer/shell_render_view_observer.h',
131131
'src/shell.cc',
132132
'src/shell.h',
133133
'src/shell_gtk.cc',

src/api/dispatcher.cc

Lines changed: 11 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -20,46 +20,27 @@
2020

2121
#include "content/nw/src/api/dispatcher.h"
2222

23-
#include "content/nw/src/api/menu/menu.h"
24-
#include "content/nw/src/api/menuitem/menuitem.h"
25-
#include "content/nw/src/api/tray/tray.h"
23+
#include "content/nw/src/api/api_messages.h"
2624

2725
namespace api {
2826

29-
Dispatcher::Dispatcher() {
27+
Dispatcher::Dispatcher(content::RenderView* render_view)
28+
: content::RenderViewObserver(render_view) {
3029
}
3130

3231
Dispatcher::~Dispatcher() {
33-
gui_.Dispose();
3432
}
3533

36-
void Dispatcher::DidCreateScriptContext(
37-
WebKit::WebFrame* frame,
38-
v8::Handle<v8::Context> context,
39-
int extension_group,
40-
int world_id) {
41-
v8::HandleScope scope;
42-
43-
// Create our gui bindings
44-
if (gui_.IsEmpty()) {
45-
gui_ = v8::Persistent<v8::Object>::New(v8::Object::New());
46-
MenuItem::Init(gui_);
47-
Menu::Init(gui_);
48-
Tray::Init(gui_);
49-
}
50-
51-
// And attach it to the global
52-
v8::Handle<v8::Value> process = context->Global()->Get(
53-
v8::String::New("process"));
54-
if (process->IsObject()) {
55-
process->ToObject()->Set(v8::String::New("gui"), gui_);
56-
}
34+
void Dispatcher::DidClearWindowObject(WebKit::WebFrame* frame) {
5735
}
5836

59-
void Dispatcher::WillReleaseScriptContext(
60-
WebKit::WebFrame* frame,
61-
v8::Handle<v8::Context> context,
62-
int world_id) {
37+
bool Dispatcher::OnMessageReceived(const IPC::Message& message) {
38+
bool handled = true;
39+
IPC_BEGIN_MESSAGE_MAP(Dispatcher, message)
40+
IPC_MESSAGE_UNHANDLED(handled = false)
41+
IPC_END_MESSAGE_MAP()
42+
43+
return handled;
6344
}
6445

6546
} // namespace api

src/api/dispatcher.h

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,31 +22,24 @@
2222
#define CONTENT_NW_SRC_API_DISPATCHER_H_
2323

2424
#include "base/basictypes.h"
25-
#include "base/memory/scoped_ptr.h"
26-
#include "v8/include/v8.h"
25+
#include "content/public/renderer/render_view_observer.h"
2726

2827
namespace WebKit {
2928
class WebFrame;
3029
}
3130

3231
namespace api {
3332

34-
class Dispatcher {
33+
class Dispatcher : public content::RenderViewObserver {
3534
public:
36-
Dispatcher();
35+
explicit Dispatcher(content::RenderView* render_view);
3736
virtual ~Dispatcher();
3837

39-
void DidCreateScriptContext(WebKit::WebFrame* frame,
40-
v8::Handle<v8::Context> context,
41-
int extension_group,
42-
int world_id);
43-
void WillReleaseScriptContext(WebKit::WebFrame* frame,
44-
v8::Handle<v8::Context> context,
45-
int world_id);
38+
// RenderViewObserver implementation.
39+
virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
40+
virtual void DidClearWindowObject(WebKit::WebFrame* frame) OVERRIDE;
4641

4742
private:
48-
v8::Persistent<v8::Object> gui_;
49-
5043
DISALLOW_COPY_AND_ASSIGN(Dispatcher);
5144
};
5245

src/renderer/shell_content_renderer_client.cc

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
#include "content/nw/src/nw_version.h"
3232
#include "content/nw/src/renderer/prerenderer/prerenderer_client.h"
3333
#include "content/nw/src/renderer/shell_render_process_observer.h"
34-
#include "content/nw/src/renderer/shell_render_view_observer.h"
3534
#include "third_party/node/src/node.h"
3635
#include "third_party/node/src/req_wrap.h"
3736
#include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h"
@@ -67,12 +66,11 @@ void ShellContentRendererClient::RenderThreadStarted() {
6766

6867
// Start observers
6968
shell_observer_.reset(new ShellRenderProcessObserver());
70-
api_dispatcher_.reset(new api::Dispatcher());
7169
}
7270

7371
void ShellContentRendererClient::RenderViewCreated(RenderView* render_view) {
72+
new api::Dispatcher(render_view);
7473
new prerender::PrerendererClient(render_view);
75-
new ShellRenderViewObserver(render_view);
7674
}
7775

7876
void ShellContentRendererClient::DidCreateScriptContext(
@@ -81,16 +79,6 @@ void ShellContentRendererClient::DidCreateScriptContext(
8179
int extension_group,
8280
int world_id) {
8381
InstallNodeSymbols(context);
84-
85-
api_dispatcher_->DidCreateScriptContext(
86-
frame, context, extension_group, world_id);
87-
}
88-
89-
void ShellContentRendererClient::WillReleaseScriptContext(
90-
WebKit::WebFrame* frame,
91-
v8::Handle<v8::Context> context,
92-
int world_id) {
93-
api_dispatcher_->WillReleaseScriptContext(frame, context, world_id);
9482
}
9583

9684
bool ShellContentRendererClient::WillSetSecurityToken(

src/renderer/shell_content_renderer_client.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,6 @@
2525
#include "base/memory/scoped_ptr.h"
2626
#include "content/public/renderer/content_renderer_client.h"
2727

28-
namespace api {
29-
class Dispatcher;
30-
}
31-
3228
namespace content {
3329

3430
class ShellRenderProcessObserver;
@@ -44,14 +40,10 @@ class ShellContentRendererClient : public ContentRendererClient {
4440
v8::Handle<v8::Context> context,
4541
int extension_group,
4642
int world_id) OVERRIDE;
47-
virtual void WillReleaseScriptContext(WebKit::WebFrame* frame,
48-
v8::Handle<v8::Context> context,
49-
int world_id) OVERRIDE;
5043
virtual bool WillSetSecurityToken(WebKit::WebFrame* frame,
5144
v8::Handle<v8::Context>) OVERRIDE;
5245

5346
private:
54-
scoped_ptr<api::Dispatcher> api_dispatcher_;
5547
scoped_ptr<ShellRenderProcessObserver> shell_observer_;
5648

5749
void InstallNodeSymbols(v8::Handle<v8::Context> context);

src/renderer/shell_render_process_observer.cc

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,8 @@
2020

2121
#include "content/nw/src/renderer/shell_render_process_observer.h"
2222

23-
#include "base/command_line.h"
24-
#include "content/nw/src/common/shell_switches.h"
2523
#include "content/public/renderer/render_thread.h"
26-
#include "third_party/node/src/node.h"
27-
#include "third_party/node/src/req_wrap.h"
2824
#include "webkit/glue/webkit_glue.h"
29-
#include "webkit/support/gc_extension.h"
3025

3126
namespace content {
3227

@@ -38,6 +33,9 @@ ShellRenderProcessObserver::~ShellRenderProcessObserver() {
3833
}
3934

4035
void ShellRenderProcessObserver::WebKitInitialized() {
36+
// To implement a catch-all for not yet implemented controller properties.
37+
webkit_glue::SetJavaScriptFlags(" --harmony_proxies");
38+
// RenderThread::Get()->RegisterExtension(new WebKitTestRunnerBindings());
4139
}
4240

4341
} // namespace content

src/renderer/shell_render_view_observer.cc

Lines changed: 0 additions & 37 deletions
This file was deleted.

src/renderer/shell_render_view_observer.h

Lines changed: 0 additions & 42 deletions
This file was deleted.

0 commit comments

Comments
 (0)