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

Side by Side Diff: components/subresource_filter/content/browser/async_document_subresource_filter_unittest.cc

Issue 2657013002: Introduce ThreadTaskRunnerHandle::OverrideForTesting and TestMockTimeTaskRunner::ScopedContext. (Closed)
Patch Set: fix RecentTabHelperTest crash? 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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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/async_document_subresour ce_filter.h" 5 #include "components/subresource_filter/content/browser/async_document_subresour ce_filter.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/bind_helpers.h" 11 #include "base/bind_helpers.h"
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/memory/ptr_util.h" 13 #include "base/memory/ptr_util.h"
14 #include "base/message_loop/message_loop.h"
15 #include "base/run_loop.h"
14 #include "base/test/test_simple_task_runner.h" 16 #include "base/test/test_simple_task_runner.h"
15 #include "base/threading/sequenced_task_runner_handle.h" 17 #include "base/threading/sequenced_task_runner_handle.h"
16 #include "components/subresource_filter/core/common/proto/rules.pb.h" 18 #include "components/subresource_filter/core/common/proto/rules.pb.h"
17 #include "components/subresource_filter/core/common/test_ruleset_creator.h" 19 #include "components/subresource_filter/core/common/test_ruleset_creator.h"
18 #include "components/subresource_filter/core/common/test_ruleset_utils.h" 20 #include "components/subresource_filter/core/common/test_ruleset_utils.h"
19 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
20 22
21 namespace subresource_filter { 23 namespace subresource_filter {
22 24
23 class AsyncDocumentSubresourceFilterTest : public ::testing::Test { 25 class AsyncDocumentSubresourceFilterTest : public ::testing::Test {
24 public: 26 public:
25 AsyncDocumentSubresourceFilterTest() 27 AsyncDocumentSubresourceFilterTest() = default;
26 : reply_task_runner_(new base::TestSimpleTaskRunner),
27 reply_task_runner_handle_(reply_task_runner_),
28 blocking_task_runner_(new base::TestSimpleTaskRunner) {}
29 28
30 protected: 29 protected:
31 void SetUp() override { 30 void SetUp() override {
32 std::vector<proto::UrlRule> rules; 31 std::vector<proto::UrlRule> rules;
33 rules.push_back(testing::CreateWhitelistRuleForDocument( 32 rules.push_back(testing::CreateWhitelistRuleForDocument(
34 "whitelisted.subframe.com", proto::ACTIVATION_TYPE_GENERICBLOCK, 33 "whitelisted.subframe.com", proto::ACTIVATION_TYPE_GENERICBLOCK,
35 {"example.com"})); 34 {"example.com"}));
36 rules.push_back(testing::CreateSuffixRule("disallowed.html")); 35 rules.push_back(testing::CreateSuffixRule("disallowed.html"));
37 36
38 ASSERT_NO_FATAL_FAILURE(test_ruleset_creator_.CreateRulesetWithRules( 37 ASSERT_NO_FATAL_FAILURE(test_ruleset_creator_.CreateRulesetWithRules(
39 rules, &test_ruleset_pair_)); 38 rules, &test_ruleset_pair_));
40 39
41 dealer_handle_.reset( 40 dealer_handle_.reset(
42 new VerifiedRulesetDealer::Handle(blocking_task_runner_)); 41 new VerifiedRulesetDealer::Handle(blocking_task_runner_));
43 } 42 }
44 43
45 void TearDown() override { 44 void TearDown() override {
46 dealer_handle_.reset(nullptr); 45 dealer_handle_.reset(nullptr);
47 RunUntilIdle(); 46 RunUntilIdle();
48 } 47 }
49 48
50 const testing::TestRuleset& ruleset() const { 49 const testing::TestRuleset& ruleset() const {
51 return test_ruleset_pair_.indexed; 50 return test_ruleset_pair_.indexed;
52 } 51 }
53 52
54 void RunUntilIdle() { 53 void RunUntilIdle() {
55 while (blocking_task_runner_->HasPendingTask() || 54 base::RunLoop().RunUntilIdle();
56 reply_task_runner_->HasPendingTask()) { 55 while (blocking_task_runner_->HasPendingTask()) {
57 blocking_task_runner_->RunUntilIdle(); 56 blocking_task_runner_->RunUntilIdle();
58 reply_task_runner_->RunUntilIdle(); 57 base::RunLoop().RunUntilIdle();
59 } 58 }
60 } 59 }
61 60
62 VerifiedRulesetDealer::Handle* dealer_handle() { 61 VerifiedRulesetDealer::Handle* dealer_handle() {
63 return dealer_handle_.get(); 62 return dealer_handle_.get();
64 } 63 }
65 64
66 std::unique_ptr<VerifiedRuleset::Handle> CreateRulesetHandle() { 65 std::unique_ptr<VerifiedRuleset::Handle> CreateRulesetHandle() {
67 return base::MakeUnique<VerifiedRuleset::Handle>(dealer_handle()); 66 return base::MakeUnique<VerifiedRuleset::Handle>(dealer_handle());
68 } 67 }
69 68
70 private: 69 private:
71 testing::TestRulesetCreator test_ruleset_creator_; 70 testing::TestRulesetCreator test_ruleset_creator_;
72 testing::TestRulesetPair test_ruleset_pair_; 71 testing::TestRulesetPair test_ruleset_pair_;
73 72
74 // Note: ADSF assumes a task runner is associated with the current thread. 73 // Note: ADSF assumes a task runner is associated with the current thread.
75 scoped_refptr<base::TestSimpleTaskRunner> reply_task_runner_; 74 // Instantiate a MessageLoop on the current thread and use RunLoop to handle
76 base::SequencedTaskRunnerHandle reply_task_runner_handle_; 75 // the replies ADSF tasks generate.
77 scoped_refptr<base::TestSimpleTaskRunner> blocking_task_runner_; 76 base::MessageLoop message_loop_;
77 scoped_refptr<base::TestSimpleTaskRunner> blocking_task_runner_ =
78 new base::TestSimpleTaskRunner;
78 79
79 std::unique_ptr<VerifiedRulesetDealer::Handle> dealer_handle_; 80 std::unique_ptr<VerifiedRulesetDealer::Handle> dealer_handle_;
80 81
81 DISALLOW_COPY_AND_ASSIGN(AsyncDocumentSubresourceFilterTest); 82 DISALLOW_COPY_AND_ASSIGN(AsyncDocumentSubresourceFilterTest);
82 }; 83 };
83 84
84 namespace { 85 namespace {
85 86
86 class TestActivationStateCallbackReceiver { 87 class TestActivationStateCallbackReceiver {
87 public: 88 public:
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 RunUntilIdle(); 259 RunUntilIdle();
259 load_policy_2.ExpectReceivedOnce(LoadPolicy::DISALLOW); 260 load_policy_2.ExpectReceivedOnce(LoadPolicy::DISALLOW);
260 EXPECT_EQ(0, first_disallowed_load_receiver.callback_count()); 261 EXPECT_EQ(0, first_disallowed_load_receiver.callback_count());
261 262
262 filter->ReportDisallowedLoad(); 263 filter->ReportDisallowedLoad();
263 EXPECT_EQ(1, first_disallowed_load_receiver.callback_count()); 264 EXPECT_EQ(1, first_disallowed_load_receiver.callback_count());
264 RunUntilIdle(); 265 RunUntilIdle();
265 } 266 }
266 267
267 } // namespace subresource_filter 268 } // namespace subresource_filter
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698