Skip to content

Commit 0bcc9b7

Browse files
committed
Don't handle browser messages before document object is created
When we recevied messages from browser, we will try to transfer the message to web page, and when we do that blink will create an empty document when there is no document object yet, which will make our init script run when window.location is still about:blank.
1 parent 4ba3e10 commit 0bcc9b7

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

atom/renderer/atom_render_view_observer.cc

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,17 @@ AtomRenderViewObserver::AtomRenderViewObserver(
3131
content::RenderView* render_view,
3232
AtomRendererClient* renderer_client)
3333
: content::RenderViewObserver(render_view),
34-
renderer_client_(renderer_client) {
34+
renderer_client_(renderer_client),
35+
document_created_(false) {
3536
}
3637

3738
AtomRenderViewObserver::~AtomRenderViewObserver() {
3839
}
3940

4041
void AtomRenderViewObserver::DidCreateDocumentElement(
4142
blink::WebLocalFrame* frame) {
43+
document_created_ = true;
44+
4245
// Read --zoom-factor from command line.
4346
std::string zoom_factor_str = CommandLine::ForCurrentProcess()->
4447
GetSwitchValueASCII(switches::kZoomFactor);;
@@ -76,6 +79,9 @@ bool AtomRenderViewObserver::OnMessageReceived(const IPC::Message& message) {
7679

7780
void AtomRenderViewObserver::OnBrowserMessage(const base::string16& channel,
7881
const base::ListValue& args) {
82+
if (!document_created_)
83+
return;
84+
7985
renderer_client_->atom_bindings()->OnBrowserMessage(
8086
render_view(), channel, args);
8187
}

atom/renderer/atom_render_view_observer.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ class AtomRenderViewObserver : public content::RenderViewObserver {
3636
// Weak reference to renderer client.
3737
AtomRendererClient* renderer_client_;
3838

39+
// Whether the document object has been created.
40+
bool document_created_;
41+
3942
DISALLOW_COPY_AND_ASSIGN(AtomRenderViewObserver);
4043
};
4144

0 commit comments

Comments
 (0)