OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |