From acf2b97425e14613f6623d1205195bd01715dae1 Mon Sep 17 00:00:00 2001 From: "k2.nagaraju" Date: Thu, 19 Jul 2018 18:05:53 +0530 Subject: [PATCH] |did-frame-rendered| used for optimize launching time Change-Id: I22de24a81b98401f02be6cb53bdd08a8e1db2de3 Signed-off-by: k2.nagaraju --- atom/browser/api/atom_api_web_contents.cc | 11 ++++++++++- atom/browser/api/atom_api_web_contents.h | 3 ++- wrt/src/web_window.js | 6 +++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/atom/browser/api/atom_api_web_contents.cc b/atom/browser/api/atom_api_web_contents.cc index 99cb90a..fccae5a 100644 --- a/atom/browser/api/atom_api_web_contents.cc +++ b/atom/browser/api/atom_api_web_contents.cc @@ -283,7 +283,8 @@ WebContents::WebContents(v8::Isolate* isolate, type_(type), request_id_(0), background_throttling_(true), - enable_devtools_(true) { + enable_devtools_(true), + notify_ready_state_(false) { if (type == REMOTE) { web_contents->SetUserAgentOverride(GetBrowserContext()->GetUserAgent()); Init(isolate); @@ -746,7 +747,15 @@ void WebContents::DidFailLoad(content::RenderFrameHost* render_frame_host, Emit("did-fail-load", error_code, error_description, url, is_main_frame); } +void WebContents::DidRenderFrame() { + if (!notify_ready_state_) { + notify_ready_state_ = true; + Emit("did-frame-rendered"); + } +} + void WebContents::DidStartLoading() { + notify_ready_state_ = false; #if defined(OS_TIZEN) if (owner_window() && !owner_window()->IsVisible()) { std::string scheme = web_contents()->GetURL().scheme(); diff --git a/atom/browser/api/atom_api_web_contents.h b/atom/browser/api/atom_api_web_contents.h index 6d50694..48d23e8 100644 --- a/atom/browser/api/atom_api_web_contents.h +++ b/atom/browser/api/atom_api_web_contents.h @@ -352,7 +352,7 @@ class WebContents : public mate::TrackableObject, void DevToolsFocused() override; void DevToolsOpened() override; void DevToolsClosed() override; - + void DidRenderFrame() override; private: struct LoadURLParams { LoadURLParams() : params(GURL()), id(0) {} @@ -412,6 +412,7 @@ class WebContents : public mate::TrackableObject, // Whether to enable devtools. bool enable_devtools_; + bool notify_ready_state_; // Container to hold url parms for deferred load when // there is a pending navigation entry. diff --git a/wrt/src/web_window.js b/wrt/src/web_window.js index 039b294..cb1f8ee 100644 --- a/wrt/src/web_window.js +++ b/wrt/src/web_window.js @@ -129,13 +129,17 @@ class WebWindow { }); this.mainWindow.webContents.on('did-finish-load', function() { webwindow_debug('WebWindow : webContents did-finish-load'); + app.emit(IPC_MESSAGE.WEBCONTENTS.DID_FINISH_LOAD, self.mainWindow.id); + }); + this.mainWindow.webContents.on('did-frame-rendered', function() { + webwindow_debug('WebWindow : webContents did-frame-rendered'); wrt.hideSplashScreen(1); if(!options.show){ webwindow_debug('WebWindow : browserWindow show options is ',options.show); + options.show = true; self.show(); } - app.emit(IPC_MESSAGE.WEBCONTENTS.DID_FINISH_LOAD, self.mainWindow.id); }); this.mainWindow.webContents.on('did-fail-load', function(event, errorCode, errorDescription, validatedUrl) { webwindow_debug('WebWindow : webContents did-fail-load'); -- 2.7.4