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

Side by Side Diff: components/subresource_filter/content/browser/content_ruleset_service_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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/subresource_filter/content/browser/content_ruleset_service_ delegate.h" 5 #include "components/subresource_filter/content/browser/content_ruleset_service. h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <string> 9 #include <string>
10 #include <tuple> 10 #include <tuple>
11 #include <utility> 11 #include <utility>
12 12
13 #include "base/bind.h" 13 #include "base/bind.h"
14 #include "base/bind_helpers.h" 14 #include "base/bind_helpers.h"
15 #include "base/callback.h" 15 #include "base/callback.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 87
88 // Extracts and takes ownership of the ruleset file handle in the IPC message. 88 // Extracts and takes ownership of the ruleset file handle in the IPC message.
89 base::File ExtractRulesetFromMessage(const IPC::Message* message) { 89 base::File ExtractRulesetFromMessage(const IPC::Message* message) {
90 std::tuple<IPC::PlatformFileForTransit> arg; 90 std::tuple<IPC::PlatformFileForTransit> arg;
91 SubresourceFilterMsg_SetRulesetForProcess::Read(message, &arg); 91 SubresourceFilterMsg_SetRulesetForProcess::Read(message, &arg);
92 return IPC::PlatformFileForTransitToFile(std::get<0>(arg)); 92 return IPC::PlatformFileForTransitToFile(std::get<0>(arg));
93 } 93 }
94 94
95 } // namespace 95 } // namespace
96 96
97 class SubresourceFilterContentRulesetServiceDelegateTest 97 class SubresourceFilterContentRulesetServiceTest : public ::testing::Test {
98 : public ::testing::Test {
99 public: 98 public:
100 SubresourceFilterContentRulesetServiceDelegateTest() 99 SubresourceFilterContentRulesetServiceTest()
101 : old_browser_client_(nullptr), existing_renderer_(&browser_context_) {} 100 : old_browser_client_(nullptr), existing_renderer_(&browser_context_) {}
102 101
103 protected: 102 protected:
104 void SetUp() override { 103 void SetUp() override {
105 ASSERT_TRUE(scoped_temp_dir_.CreateUniqueTempDir()); 104 ASSERT_TRUE(scoped_temp_dir_.CreateUniqueTempDir());
106 old_browser_client_ = content::SetBrowserClientForTesting(&browser_client_); 105 old_browser_client_ = content::SetBrowserClientForTesting(&browser_client_);
107 } 106 }
108 107
109 void TearDown() override { 108 void TearDown() override {
110 content::SetBrowserClientForTesting(old_browser_client_); 109 content::SetBrowserClientForTesting(old_browser_client_);
(...skipping 16 matching lines...) Expand all
127 } 126 }
128 127
129 private: 128 private:
130 base::ScopedTempDir scoped_temp_dir_; 129 base::ScopedTempDir scoped_temp_dir_;
131 TestContentBrowserClient browser_client_; 130 TestContentBrowserClient browser_client_;
132 content::ContentBrowserClient* old_browser_client_; 131 content::ContentBrowserClient* old_browser_client_;
133 content::TestBrowserThreadBundle thread_bundle_; 132 content::TestBrowserThreadBundle thread_bundle_;
134 content::TestBrowserContext browser_context_; 133 content::TestBrowserContext browser_context_;
135 NotifyingMockRenderProcessHost existing_renderer_; 134 NotifyingMockRenderProcessHost existing_renderer_;
136 135
137 DISALLOW_COPY_AND_ASSIGN(SubresourceFilterContentRulesetServiceDelegateTest); 136 DISALLOW_COPY_AND_ASSIGN(SubresourceFilterContentRulesetServiceTest);
138 }; 137 };
139 138
140 TEST_F(SubresourceFilterContentRulesetServiceDelegateTest, 139 TEST_F(SubresourceFilterContentRulesetServiceTest, NoRuleset_NoIPCMessages) {
141 NoRuleset_NoIPCMessages) {
142 NotifyingMockRenderProcessHost existing_renderer(browser_context()); 140 NotifyingMockRenderProcessHost existing_renderer(browser_context());
143 ContentRulesetServiceDelegate delegate; 141 ContentRulesetService service;
144 NotifyingMockRenderProcessHost new_renderer(browser_context()); 142 NotifyingMockRenderProcessHost new_renderer(browser_context());
145 base::RunLoop().RunUntilIdle(); 143 base::RunLoop().RunUntilIdle();
146 EXPECT_EQ(0u, existing_renderer.sink().message_count()); 144 EXPECT_EQ(0u, existing_renderer.sink().message_count());
147 EXPECT_EQ(0u, new_renderer.sink().message_count()); 145 EXPECT_EQ(0u, new_renderer.sink().message_count());
148 } 146 }
149 147
150 TEST_F(SubresourceFilterContentRulesetServiceDelegateTest, 148 TEST_F(SubresourceFilterContentRulesetServiceTest,
151 PublishedRuleset_IsDistributedToExistingAndNewRenderers) { 149 PublishedRuleset_IsDistributedToExistingAndNewRenderers) {
152 const char kTestFileContents[] = "foobar"; 150 const char kTestFileContents[] = "foobar";
153 base::WriteFile(scoped_temp_file(), kTestFileContents, 151 base::WriteFile(scoped_temp_file(), kTestFileContents,
154 strlen(kTestFileContents)); 152 strlen(kTestFileContents));
155 153
156 base::File file; 154 base::File file;
157 file.Initialize(scoped_temp_file(), 155 file.Initialize(scoped_temp_file(),
158 base::File::FLAG_OPEN | base::File::FLAG_READ); 156 base::File::FLAG_OPEN | base::File::FLAG_READ);
159 157
160 NotifyingMockRenderProcessHost existing_renderer(browser_context()); 158 NotifyingMockRenderProcessHost existing_renderer(browser_context());
161 ContentRulesetServiceDelegate delegate; 159 ContentRulesetService service;
162 MockClosureTarget publish_callback_target; 160 MockClosureTarget publish_callback_target;
163 delegate.SetRulesetPublishedCallbackForTesting(base::Bind( 161 service.SetRulesetPublishedCallbackForTesting(base::Bind(
164 &MockClosureTarget::Call, base::Unretained(&publish_callback_target))); 162 &MockClosureTarget::Call, base::Unretained(&publish_callback_target)));
165 EXPECT_CALL(publish_callback_target, Call()).Times(1); 163 EXPECT_CALL(publish_callback_target, Call()).Times(1);
166 delegate.PublishNewRulesetVersion(std::move(file)); 164 service.PublishNewRulesetVersion(std::move(file));
167 base::RunLoop().RunUntilIdle(); 165 base::RunLoop().RunUntilIdle();
168 ::testing::Mock::VerifyAndClearExpectations(&publish_callback_target); 166 ::testing::Mock::VerifyAndClearExpectations(&publish_callback_target);
169 167
170 ASSERT_EQ(1u, existing_renderer.sink().message_count()); 168 ASSERT_EQ(1u, existing_renderer.sink().message_count());
171 ASSERT_NO_FATAL_FAILURE(AssertSetRulesetForProcessMessageWithContent( 169 ASSERT_NO_FATAL_FAILURE(AssertSetRulesetForProcessMessageWithContent(
172 existing_renderer.sink().GetMessageAt(0), kTestFileContents)); 170 existing_renderer.sink().GetMessageAt(0), kTestFileContents));
173 171
174 NotifyingMockRenderProcessHost second_renderer(browser_context()); 172 NotifyingMockRenderProcessHost second_renderer(browser_context());
175 base::RunLoop().RunUntilIdle(); 173 base::RunLoop().RunUntilIdle();
176 174
177 ASSERT_EQ(1u, second_renderer.sink().message_count()); 175 ASSERT_EQ(1u, second_renderer.sink().message_count());
178 ASSERT_NO_FATAL_FAILURE(AssertSetRulesetForProcessMessageWithContent( 176 ASSERT_NO_FATAL_FAILURE(AssertSetRulesetForProcessMessageWithContent(
179 second_renderer.sink().GetMessageAt(0), kTestFileContents)); 177 second_renderer.sink().GetMessageAt(0), kTestFileContents));
180 } 178 }
181 179
182 TEST_F(SubresourceFilterContentRulesetServiceDelegateTest, 180 TEST_F(SubresourceFilterContentRulesetServiceTest, PostAfterStartupTask) {
183 PostAfterStartupTask) { 181 ContentRulesetService service;
184 ContentRulesetServiceDelegate delegate;
185 182
186 MockClosureTarget mock_closure_target; 183 MockClosureTarget mock_closure_target;
187 delegate.PostAfterStartupTask(base::Bind( 184 service.PostAfterStartupTask(base::Bind(
188 &MockClosureTarget::Call, base::Unretained(&mock_closure_target))); 185 &MockClosureTarget::Call, base::Unretained(&mock_closure_target)));
189 186
190 EXPECT_CALL(mock_closure_target, Call()).Times(1); 187 EXPECT_CALL(mock_closure_target, Call()).Times(1);
191 browser_client()->RunAfterStartupTask(); 188 browser_client()->RunAfterStartupTask();
192 } 189 }
193 190
194 } // namespace subresource_filter 191 } // namespace subresource_filter
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698