Index: chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_cocoa_unittest.mm |
diff --git a/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_cocoa_unittest.mm b/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_cocoa_unittest.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6dc0672f095d480832e2408ae381ad3b008996a1 |
--- /dev/null |
+++ b/chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_cocoa_unittest.mm |
@@ -0,0 +1,93 @@ |
+// Copyright 2014 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 "chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_cocoa.h" |
+ |
+#import <Cocoa/Cocoa.h> |
+ |
+#include "base/compiler_specific.h" |
+#include "base/mac/foundation_util.h" |
+#include "chrome/browser/ui/browser.h" |
+#include "chrome/browser/ui/cocoa/cocoa_profile_test.h" |
+#include "chrome/browser/ui/cocoa/cocoa_test_helper.h" |
+#import "chrome/browser/ui/cocoa/info_bubble_window.h" |
+#import "chrome/browser/ui/cocoa/passwords/manage_passwords_bubble_controller.h" |
+#include "chrome/browser/ui/passwords/manage_passwords_bubble.h" |
+#include "chrome/browser/ui/passwords/manage_passwords_ui_controller_mock.h" |
+#include "chrome/browser/ui/tabs/tab_strip_model.h" |
+#include "content/public/browser/site_instance.h" |
+#include "content/public/test/test_browser_thread_bundle.h" |
+#include "content/public/test/web_contents_tester.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+#include "testing/gtest_mac.h" |
+#include "testing/platform_test.h" |
+ |
+class ManagePasswordsBubbleCocoaTest : public CocoaProfileTest { |
+ public: |
+ virtual void SetUp() OVERRIDE { |
+ CocoaProfileTest::SetUp(); |
+ |
+ // Create the WebContents. |
+ siteInstance_ = content::SiteInstance::Create(profile()); |
+ webContents_ = content::WebContents::Create( |
+ content::WebContents::CreateParams(profile(), siteInstance_.get())); |
+ browser()->tab_strip_model()->AppendWebContents( |
+ webContents_, /*foreground=*/true); |
+ |
+ // Create the test UIController here so that it's bound to |
+ // |test_web_contents_| and therefore accessible to the model. |
+ new ManagePasswordsUIControllerMock(webContents_); |
+ } |
+ |
+ content::WebContents* webContents() { return webContents_; } |
+ |
+ void ShowBubble() { |
+ ManagePasswordsBubbleCocoa::ShowBubble( |
+ webContents(), ManagePasswordsBubble::DisplayReason::AUTOMATIC); |
+ // Disable animations so that closing happens immediately. |
+ InfoBubbleWindow* window = base::mac::ObjCCast<InfoBubbleWindow>( |
+ [ManagePasswordsBubbleCocoa::instance()->controller_ window]); |
+ [window setAllowedAnimations:info_bubble::kAnimateNone]; |
+ } |
+ |
+ void CloseBubble() { |
+ ManagePasswordsBubbleCocoa::instance()->Close(); |
+ } |
+ |
+ NSWindow* bubbleWindow() { |
+ ManagePasswordsBubbleCocoa* bubble = ManagePasswordsBubbleCocoa::instance(); |
+ return bubble ? [bubble->controller_ window] : nil; |
+ } |
+ |
+ private: |
+ scoped_refptr<content::SiteInstance> siteInstance_; |
+ content::WebContents* webContents_; // weak |
+}; |
+ |
+TEST_F(ManagePasswordsBubbleCocoaTest, ShowShouldCreateAndShowBubble) { |
+ EXPECT_FALSE(ManagePasswordsBubbleCocoa::instance()); |
+ EXPECT_FALSE([bubbleWindow() isVisible]); |
+ ShowBubble(); |
+ EXPECT_TRUE(ManagePasswordsBubbleCocoa::instance()); |
+ EXPECT_TRUE([bubbleWindow() isVisible]); |
+} |
+ |
+TEST_F(ManagePasswordsBubbleCocoaTest, CloseShouldCloseAndDeleteBubble) { |
+ ShowBubble(); |
+ EXPECT_TRUE(ManagePasswordsBubbleCocoa::instance()); |
+ EXPECT_TRUE([bubbleWindow() isVisible]); |
+ CloseBubble(); |
+ EXPECT_FALSE(ManagePasswordsBubbleCocoa::instance()); |
+ EXPECT_FALSE([bubbleWindow() isVisible]); |
+} |
+ |
+TEST_F(ManagePasswordsBubbleCocoaTest, BackgroundCloseShouldDeleteBubble) { |
+ ShowBubble(); |
+ EXPECT_TRUE(ManagePasswordsBubbleCocoa::instance()); |
+ EXPECT_TRUE([bubbleWindow() isVisible]); |
+ // Close the window directly instead of using the bubble interface. |
+ [bubbleWindow() close]; |
+ EXPECT_FALSE(ManagePasswordsBubbleCocoa::instance()); |
+ EXPECT_FALSE([bubbleWindow() isVisible]); |
+} |