diff --git a/libcef/browser/browser_contents_delegate.cc b/libcef/browser/browser_contents_delegate.cc index 08bdd0bda..c86c55ec4 100644 --- a/libcef/browser/browser_contents_delegate.cc +++ b/libcef/browser/browser_contents_delegate.cc @@ -105,6 +105,7 @@ void CefBrowserContentsDelegate::LoadingStateChanged( if (auto c = client()) { if (auto handler = c->GetLoadHandler()) { + auto navigation_lock = browser_info_->CreateNavigationLock(); handler->OnLoadingStateChange(browser(), is_loading, can_go_back, can_go_forward); } @@ -507,6 +508,7 @@ void CefBrowserContentsDelegate::OnLoadEnd(CefRefPtr frame, int http_status_code) { if (auto c = client()) { if (auto handler = c->GetLoadHandler()) { + auto navigation_lock = browser_info_->CreateNavigationLock(); handler->OnLoadEnd(browser(), frame, http_status_code); } } @@ -565,6 +567,7 @@ void CefBrowserContentsDelegate::OnLoadStart( ui::PageTransition transition_type) { if (auto c = client()) { if (auto handler = c->GetLoadHandler()) { + auto navigation_lock = browser_info_->CreateNavigationLock(); // On the handler that loading has started. handler->OnLoadStart(browser(), frame, static_cast(transition_type)); diff --git a/tests/ceftests/navigation_unittest.cc b/tests/ceftests/navigation_unittest.cc index f4b1a368e..f0f98007d 100644 --- a/tests/ceftests/navigation_unittest.cc +++ b/tests/ceftests/navigation_unittest.cc @@ -1824,11 +1824,17 @@ class LoadNavTestHandler : public TestHandler { EXPECT_EQ(RT_MAIN_FRAME, request->GetResourceType()); if (mode_ == LOAD || request->GetURL() == kLoadNav1) { EXPECT_EQ(kTransitionExplicitLoad, request->GetTransitionType()); - EXPECT_FALSE(user_gesture); + if (IsChromeRuntimeEnabled()) { + // With the Chrome runtime this is true on initial navigation via + // chrome::AddTabAt() and also true for clicked links. + EXPECT_TRUE(user_gesture); + } else { + EXPECT_FALSE(user_gesture); + } } else { EXPECT_EQ(ExpectedOpenURLTransitionType(), request->GetTransitionType()); - if (mode_ == LEFT_CLICK) { + if (mode_ == LEFT_CLICK || IsChromeRuntimeEnabled()) { EXPECT_TRUE(user_gesture); } else { EXPECT_FALSE(user_gesture); diff --git a/tests/ceftests/resource_request_handler_unittest.cc b/tests/ceftests/resource_request_handler_unittest.cc index cec388389..be5fe50b7 100644 --- a/tests/ceftests/resource_request_handler_unittest.cc +++ b/tests/ceftests/resource_request_handler_unittest.cc @@ -528,7 +528,13 @@ class BasicResponseTest : public TestHandler { } EXPECT_TRUE(frame->IsMain()); - EXPECT_FALSE(user_gesture); + if (IsChromeRuntimeEnabled()) { + // With the Chrome runtime this is true on initial navigation via + // chrome::AddTabAt() and also true for clicked links. + EXPECT_TRUE(user_gesture); + } else { + EXPECT_FALSE(user_gesture); + } if (on_before_browse_ct_ == 0 || mode_ == RESTART_RESOURCE_RESPONSE) { EXPECT_FALSE(is_redirect) << on_before_browse_ct_; } else { @@ -957,7 +963,13 @@ class BasicResponseTest : public TestHandler { EXPECT_EQ(resource_handler_created_ct_, resource_handler_destroyed_ct_); if (IsAborted()) { - EXPECT_EQ(0, on_resource_load_complete_ct_); + if (IsChromeRuntimeEnabled()) { + // Using the Chrome runtime OnResourceLoadComplete may be called with + // UR_FAILED. + EXPECT_NEAR(0, on_resource_load_complete_ct_, 1); + } else { + EXPECT_EQ(0, on_resource_load_complete_ct_); + } } else { EXPECT_EQ(1, on_resource_load_complete_ct_); } @@ -1520,16 +1532,24 @@ class SubresourceResponseTest : public RoutingTestHandler { EXPECT_EQ(browser_id_, browser->GetIdentifier()); } - if (IsMainURL(request->GetURL())) { + const std::string& url = request->GetURL(); + if (IsMainURL(url)) { EXPECT_TRUE(frame->IsMain()); - } else if (IsSubURL(request->GetURL())) { + } else if (IsSubURL(url)) { EXPECT_FALSE(frame->IsMain()); EXPECT_TRUE(subframe_); } else { EXPECT_FALSE(true); // Not reached. } - EXPECT_FALSE(user_gesture); + if (IsChromeRuntimeEnabled() && IsMainURL(url)) { + // With the Chrome runtime this is true on initial navigation via + // chrome::AddTabAt() and also true for clicked links. + EXPECT_TRUE(user_gesture); + } else { + EXPECT_FALSE(user_gesture); + } + EXPECT_FALSE(is_redirect); on_before_browse_ct_++;