| OLD | NEW |
| 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 "chrome/browser/ui/global_error/global_error_service.h" | 5 #include "chrome/browser/ui/global_error/global_error_service.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/memory/ptr_util.h" |
| 10 #include "build/build_config.h" | 11 #include "build/build_config.h" |
| 11 #include "chrome/browser/ui/browser.h" | 12 #include "chrome/browser/ui/browser.h" |
| 12 #include "chrome/browser/ui/global_error/global_error.h" | 13 #include "chrome/browser/ui/global_error/global_error.h" |
| 13 #include "chrome/browser/ui/global_error/global_error_bubble_view_base.h" | 14 #include "chrome/browser/ui/global_error/global_error_bubble_view_base.h" |
| 14 #include "chrome/browser/ui/global_error/global_error_service_factory.h" | 15 #include "chrome/browser/ui/global_error/global_error_service_factory.h" |
| 15 #include "chrome/test/base/in_process_browser_test.h" | 16 #include "chrome/test/base/in_process_browser_test.h" |
| 16 #include "content/public/test/test_utils.h" | 17 #include "content/public/test/test_utils.h" |
| 17 | 18 |
| 18 namespace { | 19 namespace { |
| 19 | 20 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 class GlobalErrorServiceBrowserTest : public InProcessBrowserTest { | 65 class GlobalErrorServiceBrowserTest : public InProcessBrowserTest { |
| 65 }; | 66 }; |
| 66 | 67 |
| 67 // Test that showing a error with a bubble view works. | 68 // Test that showing a error with a bubble view works. |
| 68 IN_PROC_BROWSER_TEST_F(GlobalErrorServiceBrowserTest, ShowBubbleView) { | 69 IN_PROC_BROWSER_TEST_F(GlobalErrorServiceBrowserTest, ShowBubbleView) { |
| 69 // This will be deleted by the GlobalErrorService. | 70 // This will be deleted by the GlobalErrorService. |
| 70 BubbleViewError* error = new BubbleViewError; | 71 BubbleViewError* error = new BubbleViewError; |
| 71 | 72 |
| 72 GlobalErrorService* service = | 73 GlobalErrorService* service = |
| 73 GlobalErrorServiceFactory::GetForProfile(browser()->profile()); | 74 GlobalErrorServiceFactory::GetForProfile(browser()->profile()); |
| 74 service->AddGlobalError(error); | 75 service->AddOwnedGlobalError(base::WrapUnique(error)); |
| 75 | 76 |
| 76 EXPECT_EQ(error, service->GetFirstGlobalErrorWithBubbleView()); | 77 EXPECT_EQ(error, service->GetFirstGlobalErrorWithBubbleView()); |
| 77 EXPECT_FALSE(error->HasShownBubbleView()); | 78 EXPECT_FALSE(error->HasShownBubbleView()); |
| 78 EXPECT_EQ(0, error->bubble_view_close_count()); | 79 EXPECT_EQ(0, error->bubble_view_close_count()); |
| 79 | 80 |
| 80 // Creating a second browser window should show the bubble view. | 81 // Creating a second browser window should show the bubble view. |
| 81 CreateBrowser(browser()->profile()); | 82 CreateBrowser(browser()->profile()); |
| 82 EXPECT_EQ(NULL, service->GetFirstGlobalErrorWithBubbleView()); | 83 EXPECT_EQ(NULL, service->GetFirstGlobalErrorWithBubbleView()); |
| 83 EXPECT_TRUE(error->HasShownBubbleView()); | 84 EXPECT_TRUE(error->HasShownBubbleView()); |
| 84 EXPECT_EQ(0, error->bubble_view_close_count()); | 85 EXPECT_EQ(0, error->bubble_view_close_count()); |
| 85 } | 86 } |
| 86 | 87 |
| 87 // Test that GlobalErrorBubbleViewBase::CloseBubbleView correctly closes the | 88 // Test that GlobalErrorBubbleViewBase::CloseBubbleView correctly closes the |
| 88 // bubble view. | 89 // bubble view. |
| 89 IN_PROC_BROWSER_TEST_F(GlobalErrorServiceBrowserTest, CloseBubbleView) { | 90 IN_PROC_BROWSER_TEST_F(GlobalErrorServiceBrowserTest, CloseBubbleView) { |
| 90 // This will be deleted by the GlobalErrorService. | 91 // This will be deleted by the GlobalErrorService. |
| 91 BubbleViewError* error = new BubbleViewError; | 92 BubbleViewError* error = new BubbleViewError; |
| 92 | 93 |
| 93 GlobalErrorService* service = | 94 GlobalErrorService* service = |
| 94 GlobalErrorServiceFactory::GetForProfile(browser()->profile()); | 95 GlobalErrorServiceFactory::GetForProfile(browser()->profile()); |
| 95 service->AddGlobalError(error); | 96 service->AddOwnedGlobalError(base::WrapUnique(error)); |
| 96 | 97 |
| 97 EXPECT_EQ(error, service->GetFirstGlobalErrorWithBubbleView()); | 98 EXPECT_EQ(error, service->GetFirstGlobalErrorWithBubbleView()); |
| 98 EXPECT_FALSE(error->HasShownBubbleView()); | 99 EXPECT_FALSE(error->HasShownBubbleView()); |
| 99 EXPECT_EQ(0, error->bubble_view_close_count()); | 100 EXPECT_EQ(0, error->bubble_view_close_count()); |
| 100 | 101 |
| 101 // Creating a second browser window should show the bubble view. | 102 // Creating a second browser window should show the bubble view. |
| 102 CreateBrowser(browser()->profile()); | 103 CreateBrowser(browser()->profile()); |
| 103 EXPECT_EQ(NULL, service->GetFirstGlobalErrorWithBubbleView()); | 104 EXPECT_EQ(NULL, service->GetFirstGlobalErrorWithBubbleView()); |
| 104 EXPECT_TRUE(error->HasShownBubbleView()); | 105 EXPECT_TRUE(error->HasShownBubbleView()); |
| 105 EXPECT_EQ(0, error->bubble_view_close_count()); | 106 EXPECT_EQ(0, error->bubble_view_close_count()); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 118 #define MAYBE_BubbleViewDismissedOnRemove DISABLED_BubbleViewDismissedOnRemove | 119 #define MAYBE_BubbleViewDismissedOnRemove DISABLED_BubbleViewDismissedOnRemove |
| 119 #else | 120 #else |
| 120 #define MAYBE_BubbleViewDismissedOnRemove BubbleViewDismissedOnRemove | 121 #define MAYBE_BubbleViewDismissedOnRemove BubbleViewDismissedOnRemove |
| 121 #endif | 122 #endif |
| 122 IN_PROC_BROWSER_TEST_F(GlobalErrorServiceBrowserTest, | 123 IN_PROC_BROWSER_TEST_F(GlobalErrorServiceBrowserTest, |
| 123 MAYBE_BubbleViewDismissedOnRemove) { | 124 MAYBE_BubbleViewDismissedOnRemove) { |
| 124 std::unique_ptr<BubbleViewError> error(new BubbleViewError); | 125 std::unique_ptr<BubbleViewError> error(new BubbleViewError); |
| 125 | 126 |
| 126 GlobalErrorService* service = | 127 GlobalErrorService* service = |
| 127 GlobalErrorServiceFactory::GetForProfile(browser()->profile()); | 128 GlobalErrorServiceFactory::GetForProfile(browser()->profile()); |
| 128 service->AddGlobalError(error.get()); | 129 service->AddUnownedGlobalError(error.get()); |
| 129 | 130 |
| 130 EXPECT_EQ(error.get(), service->GetFirstGlobalErrorWithBubbleView()); | 131 EXPECT_EQ(error.get(), service->GetFirstGlobalErrorWithBubbleView()); |
| 131 error->ShowBubbleView(browser()); | 132 error->ShowBubbleView(browser()); |
| 132 content::RunAllPendingInMessageLoop(); | 133 content::RunAllPendingInMessageLoop(); |
| 133 EXPECT_TRUE(error->HasShownBubbleView()); | 134 EXPECT_TRUE(error->HasShownBubbleView()); |
| 134 EXPECT_EQ(0, error->bubble_view_close_count()); | 135 EXPECT_EQ(0, error->bubble_view_close_count()); |
| 135 | 136 |
| 136 // Removing |error| from profile should dismiss the bubble view without | 137 // Removing |error| from profile should dismiss the bubble view without |
| 137 // calling |error->BubbleViewDidClose|. | 138 // calling |error->BubbleViewDidClose|. |
| 138 service->RemoveGlobalError(error.get()); | 139 service->RemoveUnownedGlobalError(error.get()); |
| 139 content::RunAllPendingInMessageLoop(); | 140 content::RunAllPendingInMessageLoop(); |
| 140 EXPECT_EQ(1, error->bubble_view_close_count()); | 141 EXPECT_EQ(1, error->bubble_view_close_count()); |
| 141 // |error| is no longer owned by service and will be deleted. | |
| 142 } | 142 } |
| OLD | NEW |