| Index: components/subresource_filter/content/browser/content_ruleset_service_delegate_unittest.cc
|
| diff --git a/components/subresource_filter/content/browser/content_ruleset_service_delegate_unittest.cc b/components/subresource_filter/content/browser/content_ruleset_service_delegate_unittest.cc
|
| deleted file mode 100644
|
| index 643835a65efe4cf2d487f7b7771eaca152f5f5b5..0000000000000000000000000000000000000000
|
| --- a/components/subresource_filter/content/browser/content_ruleset_service_delegate_unittest.cc
|
| +++ /dev/null
|
| @@ -1,194 +0,0 @@
|
| -// Copyright 2016 The Chromium Authors. All rights reserved.
|
| -// 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_ruleset_service_delegate.h"
|
| -
|
| -#include <stddef.h>
|
| -
|
| -#include <string>
|
| -#include <tuple>
|
| -#include <utility>
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/bind_helpers.h"
|
| -#include "base/callback.h"
|
| -#include "base/files/file.h"
|
| -#include "base/files/file_util.h"
|
| -#include "base/files/scoped_temp_dir.h"
|
| -#include "base/numerics/safe_conversions.h"
|
| -#include "base/run_loop.h"
|
| -#include "base/task_runner.h"
|
| -#include "components/subresource_filter/content/common/subresource_filter_messages.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| -#include "content/public/browser/content_browser_client.h"
|
| -#include "content/public/browser/notification_service.h"
|
| -#include "content/public/browser/notification_source.h"
|
| -#include "content/public/browser/notification_types.h"
|
| -#include "content/public/test/mock_render_process_host.h"
|
| -#include "content/public/test/test_browser_context.h"
|
| -#include "content/public/test/test_browser_thread_bundle.h"
|
| -#include "ipc/ipc_platform_file.h"
|
| -#include "ipc/ipc_test_sink.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace subresource_filter {
|
| -
|
| -namespace {
|
| -
|
| -using MockClosureTarget =
|
| - ::testing::StrictMock<::testing::MockFunction<void()>>;
|
| -
|
| -class TestContentBrowserClient : public ::content::ContentBrowserClient {
|
| - public:
|
| - TestContentBrowserClient() {}
|
| -
|
| - // ::content::ContentBrowserClient:
|
| - void PostAfterStartupTask(const tracked_objects::Location&,
|
| - const scoped_refptr<base::TaskRunner>& task_runner,
|
| - const base::Closure& task) override {
|
| - scoped_refptr<base::TaskRunner> ui_task_runner =
|
| - content::BrowserThread::GetTaskRunnerForThread(
|
| - content::BrowserThread::UI);
|
| - EXPECT_EQ(ui_task_runner, task_runner);
|
| - last_task_ = task;
|
| - }
|
| -
|
| - void RunAfterStartupTask() {
|
| - if (!last_task_.is_null())
|
| - last_task_.Run();
|
| - }
|
| -
|
| - private:
|
| - base::Closure last_task_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestContentBrowserClient);
|
| -};
|
| -
|
| -class NotifyingMockRenderProcessHost : public content::MockRenderProcessHost {
|
| - public:
|
| - explicit NotifyingMockRenderProcessHost(
|
| - content::BrowserContext* browser_context)
|
| - : content::MockRenderProcessHost(browser_context) {
|
| - content::NotificationService::current()->Notify(
|
| - content::NOTIFICATION_RENDERER_PROCESS_CREATED,
|
| - content::Source<content::RenderProcessHost>(this),
|
| - content::NotificationService::NoDetails());
|
| - }
|
| -};
|
| -
|
| -std::string ReadFileContents(base::File* file) {
|
| - size_t length = base::checked_cast<size_t>(file->GetLength());
|
| - std::string contents(length, 0);
|
| - file->Read(0, &contents[0], base::checked_cast<int>(length));
|
| - return contents;
|
| -}
|
| -
|
| -// Extracts and takes ownership of the ruleset file handle in the IPC message.
|
| -base::File ExtractRulesetFromMessage(const IPC::Message* message) {
|
| - std::tuple<IPC::PlatformFileForTransit> arg;
|
| - SubresourceFilterMsg_SetRulesetForProcess::Read(message, &arg);
|
| - return IPC::PlatformFileForTransitToFile(std::get<0>(arg));
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -class SubresourceFilterContentRulesetServiceDelegateTest
|
| - : public ::testing::Test {
|
| - public:
|
| - SubresourceFilterContentRulesetServiceDelegateTest()
|
| - : old_browser_client_(nullptr), existing_renderer_(&browser_context_) {}
|
| -
|
| - protected:
|
| - void SetUp() override {
|
| - ASSERT_TRUE(scoped_temp_dir_.CreateUniqueTempDir());
|
| - old_browser_client_ = content::SetBrowserClientForTesting(&browser_client_);
|
| - }
|
| -
|
| - void TearDown() override {
|
| - content::SetBrowserClientForTesting(old_browser_client_);
|
| - }
|
| -
|
| - content::TestBrowserContext* browser_context() { return &browser_context_; }
|
| - TestContentBrowserClient* browser_client() { return &browser_client_; }
|
| -
|
| - base::FilePath scoped_temp_file() const {
|
| - return scoped_temp_dir_.GetPath().AppendASCII("data");
|
| - }
|
| -
|
| - void AssertSetRulesetForProcessMessageWithContent(
|
| - const IPC::Message* message,
|
| - const std::string& expected_contents) {
|
| - ASSERT_EQ(SubresourceFilterMsg_SetRulesetForProcess::ID, message->type());
|
| - base::File ruleset_file = ExtractRulesetFromMessage(message);
|
| - ASSERT_TRUE(ruleset_file.IsValid());
|
| - ASSERT_EQ(expected_contents, ReadFileContents(&ruleset_file));
|
| - }
|
| -
|
| - private:
|
| - base::ScopedTempDir scoped_temp_dir_;
|
| - TestContentBrowserClient browser_client_;
|
| - content::ContentBrowserClient* old_browser_client_;
|
| - content::TestBrowserThreadBundle thread_bundle_;
|
| - content::TestBrowserContext browser_context_;
|
| - NotifyingMockRenderProcessHost existing_renderer_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(SubresourceFilterContentRulesetServiceDelegateTest);
|
| -};
|
| -
|
| -TEST_F(SubresourceFilterContentRulesetServiceDelegateTest,
|
| - NoRuleset_NoIPCMessages) {
|
| - NotifyingMockRenderProcessHost existing_renderer(browser_context());
|
| - ContentRulesetServiceDelegate delegate;
|
| - NotifyingMockRenderProcessHost new_renderer(browser_context());
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(0u, existing_renderer.sink().message_count());
|
| - EXPECT_EQ(0u, new_renderer.sink().message_count());
|
| -}
|
| -
|
| -TEST_F(SubresourceFilterContentRulesetServiceDelegateTest,
|
| - PublishedRuleset_IsDistributedToExistingAndNewRenderers) {
|
| - const char kTestFileContents[] = "foobar";
|
| - base::WriteFile(scoped_temp_file(), kTestFileContents,
|
| - strlen(kTestFileContents));
|
| -
|
| - base::File file;
|
| - file.Initialize(scoped_temp_file(),
|
| - base::File::FLAG_OPEN | base::File::FLAG_READ);
|
| -
|
| - NotifyingMockRenderProcessHost existing_renderer(browser_context());
|
| - ContentRulesetServiceDelegate delegate;
|
| - MockClosureTarget publish_callback_target;
|
| - delegate.SetRulesetPublishedCallbackForTesting(base::Bind(
|
| - &MockClosureTarget::Call, base::Unretained(&publish_callback_target)));
|
| - EXPECT_CALL(publish_callback_target, Call()).Times(1);
|
| - delegate.PublishNewRulesetVersion(std::move(file));
|
| - base::RunLoop().RunUntilIdle();
|
| - ::testing::Mock::VerifyAndClearExpectations(&publish_callback_target);
|
| -
|
| - ASSERT_EQ(1u, existing_renderer.sink().message_count());
|
| - ASSERT_NO_FATAL_FAILURE(AssertSetRulesetForProcessMessageWithContent(
|
| - existing_renderer.sink().GetMessageAt(0), kTestFileContents));
|
| -
|
| - NotifyingMockRenderProcessHost second_renderer(browser_context());
|
| - base::RunLoop().RunUntilIdle();
|
| -
|
| - ASSERT_EQ(1u, second_renderer.sink().message_count());
|
| - ASSERT_NO_FATAL_FAILURE(AssertSetRulesetForProcessMessageWithContent(
|
| - second_renderer.sink().GetMessageAt(0), kTestFileContents));
|
| -}
|
| -
|
| -TEST_F(SubresourceFilterContentRulesetServiceDelegateTest,
|
| - PostAfterStartupTask) {
|
| - ContentRulesetServiceDelegate delegate;
|
| -
|
| - MockClosureTarget mock_closure_target;
|
| - delegate.PostAfterStartupTask(base::Bind(
|
| - &MockClosureTarget::Call, base::Unretained(&mock_closure_target)));
|
| -
|
| - EXPECT_CALL(mock_closure_target, Call()).Times(1);
|
| - browser_client()->RunAfterStartupTask();
|
| -}
|
| -
|
| -} // namespace subresource_filter
|
|
|