| Index: components/subresource_filter/content/browser/content_subresource_filter_driver_factory_unittest.cc
|
| diff --git a/components/subresource_filter/content/browser/content_subresource_filter_driver_factory_unittest.cc b/components/subresource_filter/content/browser/content_subresource_filter_driver_factory_unittest.cc
|
| index f79da07ea1e7f16297e529bc539df88f57fe0d7b..e0312a73b2a8e4a5d3f873cf59b12e1be6f0019f 100644
|
| --- a/components/subresource_filter/content/browser/content_subresource_filter_driver_factory_unittest.cc
|
| +++ b/components/subresource_filter/content/browser/content_subresource_filter_driver_factory_unittest.cc
|
| @@ -2,19 +2,20 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#include "components/subresource_filter/content/browser/content_subresource_filter_driver_factory.h"
|
| +
|
| #include "base/macros.h"
|
| #include "base/memory/ptr_util.h"
|
| #include "base/metrics/field_trial.h"
|
| #include "base/test/histogram_tester.h"
|
| #include "components/safe_browsing_db/util.h"
|
| -#include "components/subresource_filter/content/browser/content_subresource_filter_driver.h"
|
| -#include "components/subresource_filter/content/browser/content_subresource_filter_driver_factory.h"
|
| #include "components/subresource_filter/content/common/subresource_filter_messages.h"
|
| #include "components/subresource_filter/core/browser/subresource_filter_client.h"
|
| #include "components/subresource_filter/core/browser/subresource_filter_features.h"
|
| #include "components/subresource_filter/core/browser/subresource_filter_features_test_support.h"
|
| #include "content/public/browser/web_contents.h"
|
| #include "content/public/common/browser_side_navigation_policy.h"
|
| +#include "content/public/test/mock_render_process_host.h"
|
| #include "content/public/test/test_renderer_host.h"
|
| #include "content/public/test/web_contents_tester.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| @@ -135,20 +136,6 @@ const ActivationLevelTestData kActivationLevelTestData[] = {
|
| {false /* expected_activation */, kActivationLevelDisabled},
|
| };
|
|
|
| -class MockSubresourceFilterDriver : public ContentSubresourceFilterDriver {
|
| - public:
|
| - explicit MockSubresourceFilterDriver(
|
| - content::RenderFrameHost* render_frame_host)
|
| - : ContentSubresourceFilterDriver(render_frame_host) {}
|
| -
|
| - ~MockSubresourceFilterDriver() override = default;
|
| -
|
| - MOCK_METHOD2(ActivateForNextCommittedLoad, void(ActivationLevel, bool));
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(MockSubresourceFilterDriver);
|
| -};
|
| -
|
| class MockSubresourceFilterClient : public SubresourceFilterClient {
|
| public:
|
| MockSubresourceFilterClient() {}
|
| @@ -176,22 +163,12 @@ class ContentSubresourceFilterDriverFactoryTest
|
| client_ = new MockSubresourceFilterClient();
|
| ContentSubresourceFilterDriverFactory::CreateForWebContents(
|
| web_contents(), base::WrapUnique(client()));
|
| - driver_ = new MockSubresourceFilterDriver(main_rfh());
|
| - SetDriverForFrameHostForTesting(main_rfh(), driver());
|
| +
|
| // Add a subframe.
|
| content::RenderFrameHostTester* rfh_tester =
|
| content::RenderFrameHostTester::For(main_rfh());
|
| rfh_tester->InitializeRenderFrameIfNeeded();
|
| subframe_rfh_ = rfh_tester->AppendChild("Child");
|
| - subframe_driver_ = new MockSubresourceFilterDriver(subframe_rfh());
|
| - SetDriverForFrameHostForTesting(subframe_rfh(), subframe_driver());
|
| - }
|
| -
|
| - void SetDriverForFrameHostForTesting(
|
| - content::RenderFrameHost* render_frame_host,
|
| - ContentSubresourceFilterDriver* driver) {
|
| - factory()->SetDriverForFrameHostForTesting(render_frame_host,
|
| - base::WrapUnique(driver));
|
| }
|
|
|
| ContentSubresourceFilterDriverFactory* factory() {
|
| @@ -200,11 +177,24 @@ class ContentSubresourceFilterDriverFactoryTest
|
| }
|
|
|
| MockSubresourceFilterClient* client() { return client_; }
|
| - MockSubresourceFilterDriver* driver() { return driver_; }
|
| -
|
| - MockSubresourceFilterDriver* subframe_driver() { return subframe_driver_; }
|
| content::RenderFrameHost* subframe_rfh() { return subframe_rfh_; }
|
|
|
| + void ExpectActivationSignalForFrame(content::RenderFrameHost* rfh,
|
| + bool expect_activation) {
|
| + content::MockRenderProcessHost* render_process_host =
|
| + static_cast<content::MockRenderProcessHost*>(rfh->GetProcess());
|
| + const IPC::Message* message =
|
| + render_process_host->sink().GetFirstMessageMatching(
|
| + SubresourceFilterMsg_ActivateForNextCommittedLoad::ID);
|
| + ASSERT_EQ(expect_activation, !!message);
|
| + if (expect_activation) {
|
| + std::tuple<ActivationLevel, bool> args;
|
| + SubresourceFilterMsg_ActivateForNextCommittedLoad::Read(message, &args);
|
| + EXPECT_NE(ActivationLevel::DISABLED, std::get<0>(args));
|
| + }
|
| + render_process_host->sink().ClearMessages();
|
| + }
|
| +
|
| void SimulateNavigationCommit(content::RenderFrameHost* rfh,
|
| const GURL& url,
|
| const content::Referrer& referrer,
|
| @@ -249,12 +239,9 @@ class ContentSubresourceFilterDriverFactoryTest
|
| rfh_tester->SimulateRedirect(url);
|
| }
|
|
|
| - EXPECT_CALL(*driver(), ActivateForNextCommittedLoad(
|
| - ::testing::_, expected_measure_performance()))
|
| - .Times(expected_activation);
|
| SimulateNavigationCommit(main_rfh(), navigation_chain.back(), referrer,
|
| transition);
|
| - ::testing::Mock::VerifyAndClearExpectations(driver());
|
| + ExpectActivationSignalForFrame(main_rfh(), expected_activation);
|
|
|
| if (expected_pattern != EMPTY) {
|
| EXPECT_THAT(tester.GetAllSamples(kMatchesPatternHistogramName),
|
| @@ -272,17 +259,13 @@ class ContentSubresourceFilterDriverFactoryTest
|
| }
|
|
|
| void NavigateAndCommitSubframe(const GURL& url, bool expected_activation) {
|
| - EXPECT_CALL(*subframe_driver(),
|
| - ActivateForNextCommittedLoad(::testing::_,
|
| - expected_measure_performance()))
|
| - .Times(expected_activation);
|
| EXPECT_CALL(*client(), ToggleNotificationVisibility(::testing::_)).Times(0);
|
|
|
| content::RenderFrameHostTester::For(subframe_rfh())
|
| ->SimulateNavigationStart(url);
|
| SimulateNavigationCommit(subframe_rfh(), url, content::Referrer(),
|
| ui::PAGE_TRANSITION_LINK);
|
| - ::testing::Mock::VerifyAndClearExpectations(subframe_driver());
|
| + ExpectActivationSignalForFrame(subframe_rfh(), expected_activation);
|
| ::testing::Mock::VerifyAndClearExpectations(client());
|
| }
|
|
|
| @@ -323,9 +306,6 @@ class ContentSubresourceFilterDriverFactoryTest
|
|
|
| void EmulateFailedNavigationAndExpectNoActivation(const GURL& url) {
|
| EXPECT_CALL(*client(), ToggleNotificationVisibility(false)).Times(1);
|
| - EXPECT_CALL(*driver(),
|
| - ActivateForNextCommittedLoad(::testing::_, ::testing::_))
|
| - .Times(0);
|
|
|
| // ReadyToCommitNavigation with browser-side navigation disabled is not
|
| // called in production code for failed navigations (e.g. network errors).
|
| @@ -335,7 +315,7 @@ class ContentSubresourceFilterDriverFactoryTest
|
| content::RenderFrameHostTester::For(main_rfh());
|
| rfh_tester->SimulateNavigationStart(url);
|
| rfh_tester->SimulateNavigationError(url, 403);
|
| - ::testing::Mock::VerifyAndClearExpectations(driver());
|
| + ExpectActivationSignalForFrame(main_rfh(), false);
|
| ::testing::Mock::VerifyAndClearExpectations(client());
|
| }
|
|
|
| @@ -352,13 +332,10 @@ class ContentSubresourceFilterDriverFactoryTest
|
|
|
| NavigateAndExpectActivation(blacklisted_urls, {GURL(kExampleUrl)},
|
| expected_pattern, expected_activation);
|
| - EXPECT_CALL(*driver(),
|
| - ActivateForNextCommittedLoad(::testing::_, ::testing::_))
|
| - .Times(0);
|
| EXPECT_CALL(*client(), ToggleNotificationVisibility(::testing::_)).Times(0);
|
| content::RenderFrameHostTester::For(main_rfh())
|
| ->SimulateNavigationCommit(GURL(kExampleUrl));
|
| - ::testing::Mock::VerifyAndClearExpectations(driver());
|
| + ExpectActivationSignalForFrame(main_rfh(), false);
|
| ::testing::Mock::VerifyAndClearExpectations(client());
|
| }
|
|
|
| @@ -372,10 +349,8 @@ class ContentSubresourceFilterDriverFactoryTest
|
|
|
| // Owned by the factory.
|
| MockSubresourceFilterClient* client_;
|
| - MockSubresourceFilterDriver* driver_;
|
|
|
| content::RenderFrameHost* subframe_rfh_;
|
| - MockSubresourceFilterDriver* subframe_driver_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ContentSubresourceFilterDriverFactoryTest);
|
| };
|
|
|