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

Unified Diff: chrome/browser/protector/protector_service_browsertest.cc

Issue 11493003: Remove the protector service. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix implicit ExtensionSystem -> TemplateURLService dependency Created 8 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/protector/protector_service.cc ('k') | chrome/browser/protector/protector_service_factory.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « chrome/browser/protector/protector_service.cc ('k') | chrome/browser/protector/protector_service_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698