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

Side by Side Diff: extensions/browser/warning_service_unittest.cc

Issue 1146693004: [Extensions] Move remaining notifications out of ExtensionSettingsHandler (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "extensions/browser/warning_service.h" 5 #include "extensions/browser/warning_service.h"
6 6
7 #include "content/public/test/test_browser_context.h" 7 #include "content/public/test/test_browser_context.h"
8 #include "extensions/browser/extensions_test.h" 8 #include "extensions/browser/extensions_test.h"
9 #include "testing/gmock/include/gmock/gmock.h" 9 #include "testing/gmock/include/gmock/gmock.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 12 matching lines...) Expand all
23 void AddWarning(const Warning& warning) { 23 void AddWarning(const Warning& warning) {
24 WarningSet warnings; 24 WarningSet warnings;
25 warnings.insert(warning); 25 warnings.insert(warning);
26 AddWarnings(warnings); 26 AddWarnings(warnings);
27 } 27 }
28 }; 28 };
29 29
30 class MockObserver : public WarningService::Observer { 30 class MockObserver : public WarningService::Observer {
31 public: 31 public:
32 virtual ~MockObserver() {} 32 virtual ~MockObserver() {}
33 MOCK_METHOD0(ExtensionWarningsChanged, void()); 33 MOCK_METHOD1(ExtensionWarningsChanged, void(const std::set<std::string>&));
34 }; 34 };
35 35
36 typedef ExtensionsTest WarningServiceTest; 36 typedef ExtensionsTest WarningServiceTest;
37 37
38 const char* ext1_id = "extension1"; 38 const char* ext1_id = "extension1";
39 const char* ext2_id = "extension2"; 39 const char* ext2_id = "extension2";
40 const Warning::WarningType warning_1 = 40 const Warning::WarningType warning_1 = Warning::kNetworkDelay;
41 Warning::kNetworkDelay; 41 const Warning::WarningType warning_2 = Warning::kNetworkConflict;
42 const Warning::WarningType warning_2 =
43 Warning::kNetworkConflict;
44 42
45 } // namespace 43 } // namespace
46 44
47 // Check that inserting a warning triggers notifications, whereas inserting 45 // Check that inserting a warning triggers notifications, whereas inserting
48 // the same warning again is silent. 46 // the same warning again is silent.
49 TEST_F(WarningServiceTest, SetWarning) { 47 TEST_F(WarningServiceTest, SetWarning) {
50 content::TestBrowserContext browser_context; 48 content::TestBrowserContext browser_context;
51 TestWarningService warning_service(&browser_context); 49 TestWarningService warning_service(&browser_context);
52 MockObserver observer; 50 MockObserver observer;
53 warning_service.AddObserver(&observer); 51 warning_service.AddObserver(&observer);
54 52
53 std::set<std::string> affected_extensions;
54 affected_extensions.insert(ext1_id);
55 // Insert warning for the first time. 55 // Insert warning for the first time.
56 EXPECT_CALL(observer, ExtensionWarningsChanged()); 56 EXPECT_CALL(observer, ExtensionWarningsChanged(affected_extensions));
57 warning_service.AddWarning( 57 warning_service.AddWarning(
58 Warning::CreateNetworkDelayWarning(ext1_id)); 58 Warning::CreateNetworkDelayWarning(ext1_id));
59 testing::Mock::VerifyAndClearExpectations(&warning_service); 59 testing::Mock::VerifyAndClearExpectations(&warning_service);
60 60
61 // Second insertion of same warning does not trigger anything. 61 // Second insertion of same warning does not trigger anything.
62 warning_service.AddWarning( 62 warning_service.AddWarning(Warning::CreateNetworkDelayWarning(ext1_id));
63 Warning::CreateNetworkDelayWarning(ext1_id));
64 testing::Mock::VerifyAndClearExpectations(&warning_service); 63 testing::Mock::VerifyAndClearExpectations(&warning_service);
65 64
66 warning_service.RemoveObserver(&observer); 65 warning_service.RemoveObserver(&observer);
67 } 66 }
68 67
69 // Check that ClearWarnings deletes exactly the specified warnings and 68 // Check that ClearWarnings deletes exactly the specified warnings and
70 // triggers notifications where appropriate. 69 // triggers notifications where appropriate.
71 TEST_F(WarningServiceTest, ClearWarnings) { 70 TEST_F(WarningServiceTest, ClearWarnings) {
72 content::TestBrowserContext browser_context; 71 content::TestBrowserContext browser_context;
73 TestWarningService warning_service(&browser_context); 72 TestWarningService warning_service(&browser_context);
74 MockObserver observer; 73 MockObserver observer;
75 warning_service.AddObserver(&observer); 74 warning_service.AddObserver(&observer);
76 75
77 // Insert two unique warnings in one batch. 76 // Insert two unique warnings in one batch.
78 EXPECT_CALL(observer, ExtensionWarningsChanged()); 77 std::set<std::string> affected_extensions;
78 affected_extensions.insert(ext1_id);
79 affected_extensions.insert(ext2_id);
80 EXPECT_CALL(observer, ExtensionWarningsChanged(affected_extensions));
79 WarningSet warning_set; 81 WarningSet warning_set;
80 warning_set.insert(Warning::CreateNetworkDelayWarning(ext1_id)); 82 warning_set.insert(Warning::CreateNetworkDelayWarning(ext1_id));
81 warning_set.insert(Warning::CreateNetworkConflictWarning(ext2_id)); 83 warning_set.insert(Warning::CreateNetworkConflictWarning(ext2_id));
82 warning_service.AddWarnings(warning_set); 84 warning_service.AddWarnings(warning_set);
83 testing::Mock::VerifyAndClearExpectations(&warning_service); 85 testing::Mock::VerifyAndClearExpectations(&warning_service);
84 86
85 // Remove one warning and check that the badge remains. 87 // Remove one warning and check that the badge remains.
86 EXPECT_CALL(observer, ExtensionWarningsChanged()); 88 affected_extensions.clear();
89 affected_extensions.insert(ext2_id);
90 EXPECT_CALL(observer, ExtensionWarningsChanged(affected_extensions));
87 std::set<Warning::WarningType> to_clear; 91 std::set<Warning::WarningType> to_clear;
88 to_clear.insert(warning_2); 92 to_clear.insert(warning_2);
89 warning_service.ClearWarnings(to_clear); 93 warning_service.ClearWarnings(to_clear);
90 testing::Mock::VerifyAndClearExpectations(&warning_service); 94 testing::Mock::VerifyAndClearExpectations(&warning_service);
91 95
92 // Check that the correct warnings appear in |warnings|. 96 // Check that the correct warnings appear in |warnings|.
93 std::set<Warning::WarningType> existing_warnings = 97 std::set<Warning::WarningType> existing_warnings =
94 warning_service.GetWarningTypesAffectingExtension(ext1_id); 98 warning_service.GetWarningTypesAffectingExtension(ext1_id);
95 EXPECT_EQ(1u, existing_warnings.size()); 99 EXPECT_EQ(1u, existing_warnings.size());
96 existing_warnings = 100 existing_warnings =
97 warning_service.GetWarningTypesAffectingExtension(ext2_id); 101 warning_service.GetWarningTypesAffectingExtension(ext2_id);
98 EXPECT_EQ(0u, existing_warnings.size()); 102 EXPECT_EQ(0u, existing_warnings.size());
99 103
100 // Remove the other one warning. 104 // Remove the other one warning.
101 EXPECT_CALL(observer, ExtensionWarningsChanged()); 105 affected_extensions.clear();
106 affected_extensions.insert(ext1_id);
107 EXPECT_CALL(observer, ExtensionWarningsChanged(affected_extensions));
102 to_clear.insert(warning_1); 108 to_clear.insert(warning_1);
103 warning_service.ClearWarnings(to_clear); 109 warning_service.ClearWarnings(to_clear);
104 testing::Mock::VerifyAndClearExpectations(&warning_service); 110 testing::Mock::VerifyAndClearExpectations(&warning_service);
105 111
106 // Check that not warnings remain. 112 // Check that no warnings remain.
107 existing_warnings = 113 existing_warnings =
108 warning_service.GetWarningTypesAffectingExtension(ext1_id); 114 warning_service.GetWarningTypesAffectingExtension(ext1_id);
109 EXPECT_EQ(0u, existing_warnings.size()); 115 EXPECT_EQ(0u, existing_warnings.size());
110 existing_warnings = 116 existing_warnings =
111 warning_service.GetWarningTypesAffectingExtension(ext2_id); 117 warning_service.GetWarningTypesAffectingExtension(ext2_id);
112 EXPECT_EQ(0u, existing_warnings.size()); 118 EXPECT_EQ(0u, existing_warnings.size());
113 119
114 warning_service.RemoveObserver(&observer); 120 warning_service.RemoveObserver(&observer);
115 } 121 }
116 122
117 } // namespace extensions 123 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698