[M34 Merge] Fix for the 'Reload' button not displayed on page load finish
authorLukasz Krok <l.krok@samsung.com>
Wed, 25 Feb 2015 16:24:50 +0000 (17:24 +0100)
committerYoungsoo Choi <kenshin.choi@samsung.com>
Tue, 10 Jul 2018 06:57:09 +0000 (06:57 +0000)
[Cause] "load,started" callback was triggered more than once,
e.g when an iframe present on the page was reloaded. In a browser,
it caused the status bar to be refreshed and reload button to
be changed into cancel button. Additionally, in such case, the "load,finished"
callback was not triggered and the cancel button never changed back into
reload.

[Solution] "load,started" and "load,finished" should be called
only once, when a page is loaded.

M34-merge: http://165.213.202.130:8080/#/c/69958/
Bug: http://168.219.209.56/jira/browse/TNEF-172
Reviewed by: Antonio Gomes, Piotr Grad, SeungSeop Park

Change-Id: I4b47a3833cbf487e2473c2fe70d2340111b5c807
Signed-off-by: Lukasz Krok <l.krok@samsung.com>
tizen_src/impl/web_contents_delegate_efl.cc
tizen_src/impl/web_contents_delegate_efl.h

index b8dc5e4..324fcd5 100644 (file)
@@ -323,6 +323,19 @@ void WebContentsDelegateEfl::DidCommitProvisionalLoadForFrame(RenderFrameHost* r
   web_view_->SmartCallback<EWebViewCallbacks::LoadCommitted>().call();
 }
 
+
+void WebContentsDelegateEfl::DidNavigateMainFrame(const LoadCommittedDetails& details,
+                                                  const FrameNavigateParams& params) {
+  // The condition checks whether the main frame navigated to a different page,
+  // not scrolled to a fragment inside the current page.
+  if (details.is_navigation_to_different_page())
+    web_view_->SmartCallback<EWebViewCallbacks::LoadStarted>().call();
+}
+
+void WebContentsDelegateEfl::DocumentOnLoadCompletedInMainFrame() {
+  web_view_->SmartCallback<EWebViewCallbacks::LoadFinished>().call();
+}
+
 void WebContentsDelegateEfl::DidNavigateAnyFrame(RenderFrameHost* render_frame_host, const LoadCommittedDetails& details, const FrameNavigateParams& params) {
   web_view_->SmartCallback<EWebViewCallbacks::ProvisionalLoadRedirect>().call();
   static_cast<BrowserContextEfl*>(web_contents_.GetBrowserContext())->AddVisitedURLs(params.redirects);
@@ -359,12 +372,8 @@ void WebContentsDelegateEfl::DidFinishLoad(RenderFrameHost* render_frame_host,
   }
 
   web_view_->HandleFocusIn();
-  web_view_->SmartCallback<EWebViewCallbacks::LoadFinished>().call();
 }
 
-void WebContentsDelegateEfl::DidStartLoading(RenderViewHost* render_view_host) {
-  web_view_->SmartCallback<EWebViewCallbacks::LoadStarted>().call();
-}
 
 void WebContentsDelegateEfl::DidUpdateFaviconURL(const std::vector<FaviconURL>& candidates) {
   // select and set proper favicon
index 0eba45f..cfe4a92 100644 (file)
@@ -113,6 +113,10 @@ class WebContentsDelegateEfl
                                                 const GURL& url,
                                                 ui::PageTransition transition_type) override;
 
+  virtual void DidNavigateMainFrame(const LoadCommittedDetails& details,
+                                    const FrameNavigateParams& params) override;
+  virtual void DocumentOnLoadCompletedInMainFrame() override;
+
   virtual void DidNavigateAnyFrame(RenderFrameHost* render_frame_host,
                                    const LoadCommittedDetails& details,
                                    const FrameNavigateParams& params) override;
@@ -124,7 +128,6 @@ class WebContentsDelegateEfl
   virtual void DidFinishLoad(RenderFrameHost* render_frame_host,
                              const GURL& validated_url) override;
 
-  virtual void DidStartLoading(RenderViewHost* render_view_host) override;
   virtual void DidUpdateFaviconURL(const std::vector<FaviconURL>& candidates) override;
   virtual void DidDownloadFavicon(bool success, const GURL& icon_url, const SkBitmap& bitmap);