Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(857)

Unified Diff: components/subresource_filter/content/browser/content_ruleset_service_delegate_unittest.cc

Issue 2731283009: Swap ownership of RulesetService and the content delegate (Closed)
Patch Set: engedy review Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698