Index: chrome/browser/protector/protector_service_browsertest.cc |
diff --git a/chrome/browser/protector/protector_service_browsertest.cc b/chrome/browser/protector/protector_service_browsertest.cc |
deleted file mode 100644 |
index 66669e3cb8d77e4e40e9a10e02b21e23d3a3780c..0000000000000000000000000000000000000000 |
--- a/chrome/browser/protector/protector_service_browsertest.cc |
+++ /dev/null |
@@ -1,662 +0,0 @@ |
-// Copyright (c) 2012 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 "base/command_line.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/message_loop.h" |
-#include "chrome/app/chrome_command_ids.h" |
-#include "chrome/browser/protector/mock_setting_change.h" |
-#include "chrome/browser/protector/protector_service.h" |
-#include "chrome/browser/protector/protector_service_factory.h" |
-#include "chrome/browser/protector/settings_change_global_error.h" |
-#include "chrome/browser/ui/browser.h" |
-#include "chrome/browser/ui/global_error/global_error.h" |
-#include "chrome/browser/ui/global_error/global_error_bubble_view_base.h" |
-#include "chrome/browser/ui/global_error/global_error_service.h" |
-#include "chrome/browser/ui/global_error/global_error_service_factory.h" |
-#include "chrome/common/chrome_switches.h" |
-#include "chrome/test/base/in_process_browser_test.h" |
-#include "chrome/test/base/ui_test_utils.h" |
- |
-using ::testing::InvokeWithoutArgs; |
-using ::testing::NiceMock; |
-using ::testing::Return; |
- |
-namespace protector { |
- |
-class ProtectorServiceTest : public InProcessBrowserTest { |
- public: |
- virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
- // Make sure protector is enabled. |
- command_line->AppendSwitch(switches::kProtector); |
- } |
- |
- virtual void SetUpOnMainThread() OVERRIDE { |
- protector_service_ = |
- ProtectorServiceFactory::GetForProfile(browser()->profile()); |
- // ProtectService will own this change instance. |
- mock_change_ = new NiceMock<MockSettingChange>(); |
- } |
- |
- protected: |
- GlobalError* GetGlobalError(BaseSettingChange* change) { |
- for (ProtectorService::Items::iterator item = |
- protector_service_->items_.begin(); |
- item != protector_service_->items_.end(); item++) { |
- if (item->change.get() == change) |
- return item->error.get(); |
- } |
- return NULL; |
- } |
- |
- // Checks that |protector_service_| has an error instance corresponding to |
- // |change| and that GlobalErrorService knows about it. |
- bool IsGlobalErrorActive(BaseSettingChange* change) { |
- GlobalError* error = GetGlobalError(change); |
- if (!error) |
- return false; |
- if (!GlobalErrorServiceFactory::GetForProfile(browser()->profile())-> |
- GetGlobalErrorByMenuItemCommandID(error->MenuItemCommandID())) { |
- return false; |
- } |
- return protector_service_->IsShowingChange(); |
- } |
- |
- ProtectorService* protector_service_; |
- MockSettingChange* mock_change_; |
-}; |
- |
-IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ChangeInitError) { |
- // Init fails and causes the change to be ignored. |
- EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
- WillOnce(Return(false)); |
- protector_service_->ShowChange(mock_change_); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_FALSE(protector_service_->GetLastChange()); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowAndDismiss) { |
- // Show the change and immediately dismiss it. |
- EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- protector_service_->ShowChange(mock_change_); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); |
- protector_service_->DismissChange(mock_change_); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_FALSE(protector_service_->GetLastChange()); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowAndApply) { |
- // Show the change and apply it. |
- EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- protector_service_->ShowChange(mock_change_); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_CALL(*mock_change_, Apply(browser())); |
- protector_service_->ApplyChange(mock_change_, browser()); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
-} |
- |
-// ProtectorServiceTest.ShowAndApplyManually is timing out frequently on Win |
-// bots. http://crbug.com/130590 |
-#if defined(OS_WIN) |
-#define MAYBE_ShowAndApplyManually DISABLED_ShowAndApplyManually |
-#else |
-#define MAYBE_ShowAndApplyManually ShowAndApplyManually |
-#endif |
- |
-IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, MAYBE_ShowAndApplyManually) { |
- // Show the change and apply it, mimicking a button click. |
- EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- protector_service_->ShowChange(mock_change_); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_CALL(*mock_change_, Apply(browser())); |
- // Pressing Cancel applies the change. |
- GlobalError* error = GetGlobalError(mock_change_); |
- ASSERT_TRUE(error); |
- error->BubbleViewCancelButtonPressed(browser()); |
- error->GetBubbleView()->CloseBubbleView(); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowAndDiscard) { |
- // Show the change and discard it. |
- EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- protector_service_->ShowChange(mock_change_); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_CALL(*mock_change_, Discard(browser())); |
- protector_service_->DiscardChange(mock_change_, browser()); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
-} |
- |
-#if defined(OS_WIN) |
-// http://crbug.com/141916 |
-#define MAYBE_ShowAndDiscardManually FLAKY_ShowAndDiscardManually |
-#else |
-#define MAYBE_ShowAndDiscardManually ShowAndDiscardManually |
-#endif |
-IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, MAYBE_ShowAndDiscardManually) { |
- // Show the change and discard it, mimicking a button click. |
- EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- protector_service_->ShowChange(mock_change_); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_CALL(*mock_change_, Discard(browser())); |
- // Pressing Apply discards the change. |
- GlobalError* error = GetGlobalError(mock_change_); |
- ASSERT_TRUE(error); |
- error->BubbleViewAcceptButtonPressed(browser()); |
- error->GetBubbleView()->CloseBubbleView(); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, BubbleClosedInsideApply) { |
- EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- protector_service_->ShowChange(mock_change_); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- |
- GlobalError* error = GetGlobalError(mock_change_); |
- ASSERT_TRUE(error); |
- GlobalErrorBubbleViewBase* bubble_view = error->GetBubbleView(); |
- ASSERT_TRUE(bubble_view); |
- EXPECT_CALL(*mock_change_, Apply(browser())).WillOnce(InvokeWithoutArgs( |
- bubble_view, &GlobalErrorBubbleViewBase::CloseBubbleView)); |
- // Pressing Cancel applies the change. |
- error->BubbleViewCancelButtonPressed(browser()); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowMultipleChangesAndApply) { |
- // Show the first change. |
- EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- protector_service_->ShowChange(mock_change_); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); |
- |
- // ProtectService will own this change instance as well. |
- MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
- // Show the second change. |
- EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(false)); |
- protector_service_->ShowChange(mock_change2); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); |
- EXPECT_EQ(mock_change2, protector_service_->GetLastChange()); |
- |
- // Apply the first change, the second should still be active. |
- EXPECT_CALL(*mock_change_, Apply(browser())); |
- protector_service_->ApplyChange(mock_change_, browser()); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); |
- EXPECT_EQ(mock_change2, protector_service_->GetLastChange()); |
- |
- // Finally apply the second change. |
- EXPECT_CALL(*mock_change2, Apply(browser())); |
- protector_service_->ApplyChange(mock_change2, browser()); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); |
- EXPECT_FALSE(protector_service_->GetLastChange()); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, |
- ShowMultipleChangesDismissAndApply) { |
- // Show the first change. |
- EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- protector_service_->ShowChange(mock_change_); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- |
- // ProtectService will own this change instance as well. |
- MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
- // Show the second change. |
- EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(false)); |
- protector_service_->ShowChange(mock_change2); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); |
- |
- // Dismiss the first change, the second should still be active. |
- protector_service_->DismissChange(mock_change_); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); |
- |
- // Finally apply the second change. |
- EXPECT_CALL(*mock_change2, Apply(browser())); |
- protector_service_->ApplyChange(mock_change2, browser()); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, |
- ShowMultipleChangesAndApplyManually) { |
- // Show the first change. |
- EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- protector_service_->ShowChange(mock_change_); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- |
- // The first bubble view has been displayed. |
- GlobalError* error = GetGlobalError(mock_change_); |
- ASSERT_TRUE(error); |
- ASSERT_TRUE(error->HasShownBubbleView()); |
- |
- // ProtectService will own this change instance as well. |
- MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
- // Show the second change. |
- EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(false)); |
- protector_service_->ShowChange(mock_change2); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); |
- |
- // The second bubble view hasn't been displayed because the first is still |
- // shown. |
- GlobalError* error2 = GetGlobalError(mock_change2); |
- ASSERT_TRUE(error2); |
- EXPECT_FALSE(error2->HasShownBubbleView()); |
- |
- // Apply the first change, mimicking a button click; the second should still |
- // be active. |
- EXPECT_CALL(*mock_change_, Apply(browser())); |
- error->BubbleViewCancelButtonPressed(browser()); |
- error->GetBubbleView()->CloseBubbleView(); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); |
- |
- // Now the second bubble view should be shown. |
- ASSERT_TRUE(error2->HasShownBubbleView()); |
- |
- // Finally apply the second change. |
- EXPECT_CALL(*mock_change2, Apply(browser())); |
- error2->BubbleViewCancelButtonPressed(browser()); |
- error2->GetBubbleView()->CloseBubbleView(); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, |
- ShowMultipleChangesAndApplyManuallyBeforeOther) { |
- // Show the first change. |
- EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- protector_service_->ShowChange(mock_change_); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- |
- // The first bubble view has been displayed. |
- GlobalError* error = GetGlobalError(mock_change_); |
- ASSERT_TRUE(error); |
- ASSERT_TRUE(error->HasShownBubbleView()); |
- |
- // Apply the first change, mimicking a button click. |
- EXPECT_CALL(*mock_change_, Apply(browser())); |
- error->BubbleViewCancelButtonPressed(browser()); |
- error->GetBubbleView()->CloseBubbleView(); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
- |
- // ProtectService will own this change instance as well. |
- MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
- // Show the second change. |
- EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(false)); |
- protector_service_->ShowChange(mock_change2); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); |
- |
- // The second bubble view has been displayed. |
- GlobalError* error2 = GetGlobalError(mock_change2); |
- ASSERT_TRUE(error2); |
- ASSERT_TRUE(error2->HasShownBubbleView()); |
- |
- // Finally apply the second change. |
- EXPECT_CALL(*mock_change2, Apply(browser())); |
- error2->BubbleViewCancelButtonPressed(browser()); |
- error2->GetBubbleView()->CloseBubbleView(); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowMultipleDifferentURLs) { |
- GURL url1("http://example.com/"); |
- GURL url2("http://example.net/"); |
- |
- // Show the first change with some non-empty URL. |
- EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change_, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
- EXPECT_CALL(*mock_change_, CanBeMerged()).WillRepeatedly(Return(true)); |
- protector_service_->ShowChange(mock_change_); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); |
- |
- // ProtectService will own this change instance as well. |
- MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
- // Show the second change with another non-empty URL. |
- EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change2, GetNewSettingURL()).WillRepeatedly(Return(url2)); |
- EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(true)); |
- protector_service_->ShowChange(mock_change2); |
- content::RunAllPendingInMessageLoop(); |
- |
- // Both changes are shown separately, not composited. |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); |
- EXPECT_EQ(mock_change2, protector_service_->GetLastChange()); |
- |
- protector_service_->DismissChange(mock_change_); |
- protector_service_->DismissChange(mock_change2); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(protector_service_->GetLastChange()); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowCompositeAndDismiss) { |
- GURL url1("http://example.com/"); |
- |
- // Show the first change. |
- EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change_, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
- EXPECT_CALL(*mock_change_, CanBeMerged()).WillRepeatedly(Return(true)); |
- protector_service_->ShowChange(mock_change_); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); |
- |
- // The first bubble view has been displayed. |
- GlobalError* error = GetGlobalError(mock_change_); |
- ASSERT_TRUE(error); |
- EXPECT_TRUE(error->HasShownBubbleView()); |
- |
- // ProtectService will own this change instance as well. |
- MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
- // Show the second change. |
- EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change2, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
- EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(true)); |
- protector_service_->ShowChange(mock_change2); |
- content::RunAllPendingInMessageLoop(); |
- |
- // Now ProtectorService should be showing a single composite change. |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); |
- |
- BaseSettingChange* composite_change = protector_service_->GetLastChange(); |
- ASSERT_TRUE(composite_change); |
- EXPECT_TRUE(IsGlobalErrorActive(composite_change)); |
- |
- // The second (composite) bubble view has been displayed. |
- GlobalError* error2 = GetGlobalError(composite_change); |
- ASSERT_TRUE(error2); |
- EXPECT_TRUE(error2->HasShownBubbleView()); |
- |
- protector_service_->DismissChange(composite_change); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(composite_change)); |
- EXPECT_FALSE(protector_service_->GetLastChange()); |
- |
- // Show the third change. |
- MockSettingChange* mock_change3 = new NiceMock<MockSettingChange>(); |
- EXPECT_CALL(*mock_change3, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change3, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
- EXPECT_CALL(*mock_change3, CanBeMerged()).WillRepeatedly(Return(true)); |
- protector_service_->ShowChange(mock_change3); |
- content::RunAllPendingInMessageLoop(); |
- |
- // The third change should not be composed with the previous. |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change3)); |
- EXPECT_EQ(mock_change3, protector_service_->GetLastChange()); |
- |
- protector_service_->DismissChange(mock_change3); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change3)); |
- EXPECT_FALSE(protector_service_->GetLastChange()); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowCompositeAndOther) { |
- GURL url1("http://example.com/"); |
- GURL url2("http://example.net/"); |
- |
- // Show the first change. |
- EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change_, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
- EXPECT_CALL(*mock_change_, CanBeMerged()).WillRepeatedly(Return(true)); |
- protector_service_->ShowChange(mock_change_); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); |
- |
- // ProtectService will own this change instance as well. |
- MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
- // Show the second change. |
- EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change2, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
- EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(true)); |
- protector_service_->ShowChange(mock_change2); |
- content::RunAllPendingInMessageLoop(); |
- |
- // Now ProtectorService should be showing a single composite change. |
- BaseSettingChange* composite_change = protector_service_->GetLastChange(); |
- ASSERT_TRUE(composite_change); |
- EXPECT_TRUE(IsGlobalErrorActive(composite_change)); |
- |
- // Show the third change, with the same URL as 1st and 2nd. |
- MockSettingChange* mock_change3 = new NiceMock<MockSettingChange>(); |
- EXPECT_CALL(*mock_change3, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change3, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
- EXPECT_CALL(*mock_change3, CanBeMerged()).WillRepeatedly(Return(true)); |
- protector_service_->ShowChange(mock_change3); |
- content::RunAllPendingInMessageLoop(); |
- |
- // The third change should be composed with the previous. |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change3)); |
- EXPECT_EQ(composite_change, protector_service_->GetLastChange()); |
- EXPECT_TRUE(IsGlobalErrorActive(composite_change)); |
- |
- // Show the 4th change, now with a different URL. |
- MockSettingChange* mock_change4 = new NiceMock<MockSettingChange>(); |
- EXPECT_CALL(*mock_change4, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change4, GetNewSettingURL()).WillRepeatedly(Return(url2)); |
- EXPECT_CALL(*mock_change4, CanBeMerged()).WillRepeatedly(Return(true)); |
- protector_service_->ShowChange(mock_change4); |
- content::RunAllPendingInMessageLoop(); |
- |
- // The 4th change is shown independently. |
- EXPECT_TRUE(IsGlobalErrorActive(composite_change)); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change4)); |
- EXPECT_EQ(mock_change4, protector_service_->GetLastChange()); |
- |
- protector_service_->DismissChange(composite_change); |
- protector_service_->DismissChange(mock_change4); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(composite_change)); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change4)); |
- EXPECT_FALSE(protector_service_->GetLastChange()); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowCompositeAndDismissSingle) { |
- GURL url1("http://example.com/"); |
- GURL url2("http://example.net/"); |
- |
- // Show the first change. |
- EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change_, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
- EXPECT_CALL(*mock_change_, CanBeMerged()).WillRepeatedly(Return(true)); |
- protector_service_->ShowChange(mock_change_); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); |
- |
- // ProtectService will own this change instance as well. |
- MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
- // Show the second change. |
- EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change2, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
- EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(true)); |
- protector_service_->ShowChange(mock_change2); |
- content::RunAllPendingInMessageLoop(); |
- |
- // Now ProtectorService should be showing a single composite change. |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); |
- |
- BaseSettingChange* composite_change = protector_service_->GetLastChange(); |
- ASSERT_TRUE(composite_change); |
- EXPECT_TRUE(IsGlobalErrorActive(composite_change)); |
- |
- // Show the third change with a different URL. |
- MockSettingChange* mock_change3 = new NiceMock<MockSettingChange>(); |
- EXPECT_CALL(*mock_change3, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change3, GetNewSettingURL()).WillRepeatedly(Return(url2)); |
- EXPECT_CALL(*mock_change3, CanBeMerged()).WillRepeatedly(Return(true)); |
- protector_service_->ShowChange(mock_change3); |
- content::RunAllPendingInMessageLoop(); |
- |
- // The third change should not be composed with the previous. |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change3)); |
- EXPECT_TRUE(IsGlobalErrorActive(composite_change)); |
- EXPECT_EQ(mock_change3, protector_service_->GetLastChange()); |
- |
- // Now dismiss the first change. |
- protector_service_->DismissChange(mock_change_); |
- content::RunAllPendingInMessageLoop(); |
- |
- // This should effectively dismiss the whole composite change. |
- EXPECT_FALSE(IsGlobalErrorActive(composite_change)); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change3)); |
- EXPECT_EQ(mock_change3, protector_service_->GetLastChange()); |
- |
- protector_service_->DismissChange(mock_change3); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change3)); |
- EXPECT_FALSE(protector_service_->GetLastChange()); |
-} |
- |
-// Verifies that changes with different URLs but same domain are merged. |
-IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, SameDomainDifferentURLs) { |
- GURL url1("http://www.example.com/abc"); |
- GURL url2("http://example.com/def"); |
- |
- // Show the first change with some non-empty URL. |
- EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change_, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
- EXPECT_CALL(*mock_change_, CanBeMerged()).WillRepeatedly(Return(true)); |
- protector_service_->ShowChange(mock_change_); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); |
- |
- // ProtectService will own this change instance as well. |
- MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
- // Show the second change with another non-empty URL having same domain. |
- EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change2, GetNewSettingURL()).WillRepeatedly(Return(url2)); |
- EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(true)); |
- protector_service_->ShowChange(mock_change2); |
- content::RunAllPendingInMessageLoop(); |
- |
- // Changes should be merged. |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); |
- |
- BaseSettingChange* composite_change = protector_service_->GetLastChange(); |
- ASSERT_TRUE(composite_change); |
- EXPECT_TRUE(IsGlobalErrorActive(composite_change)); |
- |
- protector_service_->DismissChange(composite_change); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(composite_change)); |
- EXPECT_FALSE(protector_service_->GetLastChange()); |
-} |
- |
-// Verifies that changes with different Google URLs are merged. |
-IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, DifferentGoogleDomains) { |
- GURL url1("http://www.google.com/search?q="); |
- GURL url2("http://google.ru/search?q="); |
- |
- // Show the first change with some non-empty URL. |
- EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change_, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
- EXPECT_CALL(*mock_change_, CanBeMerged()).WillRepeatedly(Return(true)); |
- protector_service_->ShowChange(mock_change_); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); |
- |
- // ProtectService will own this change instance as well. |
- MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
- // Show the second change with another non-empty URL having same domain. |
- EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
- WillOnce(Return(true)); |
- EXPECT_CALL(*mock_change2, GetNewSettingURL()).WillRepeatedly(Return(url2)); |
- EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(true)); |
- protector_service_->ShowChange(mock_change2); |
- content::RunAllPendingInMessageLoop(); |
- |
- // Changes should be merged. |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
- EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); |
- |
- BaseSettingChange* composite_change = protector_service_->GetLastChange(); |
- ASSERT_TRUE(composite_change); |
- EXPECT_TRUE(IsGlobalErrorActive(composite_change)); |
- |
- protector_service_->DismissChange(composite_change); |
- content::RunAllPendingInMessageLoop(); |
- EXPECT_FALSE(IsGlobalErrorActive(composite_change)); |
- EXPECT_FALSE(protector_service_->GetLastChange()); |
-} |
- |
-// TODO(ivankr): Timeout test. |
- |
-} // namespace protector |