Chromium Code Reviews| 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 "base/memory/scoped_ptr.h" | |
| 5 #include "chrome/test/base/in_process_browser_test.h" | 6 #include "chrome/test/base/in_process_browser_test.h" |
| 6 #include "chrome/browser/ui/browser.h" | 7 #include "chrome/browser/ui/browser.h" |
| 7 #include "chrome/browser/ui/cocoa/web_intent_picker_test_base.h" | |
| 8 #include "chrome/browser/ui/cocoa/web_intent_picker_cocoa.h" | 8 #include "chrome/browser/ui/cocoa/web_intent_picker_cocoa.h" |
| 9 #import "chrome/browser/ui/cocoa/web_intent_sheet_controller.h" | |
| 10 #include "chrome/browser/ui/intents/web_intent_picker_delegate.h" | |
| 9 #include "chrome/browser/ui/intents/web_intent_picker_model.h" | 11 #include "chrome/browser/ui/intents/web_intent_picker_model.h" |
| 10 #include "testing/gmock/include/gmock/gmock.h" | 12 #include "testing/gmock/include/gmock/gmock.h" |
| 13 #include "testing/gmock/include/gmock/gmock.h" | |
| 11 | 14 |
| 12 class WebIntentSheetControllerBrowserTest : public InProcessBrowserTest, | 15 class MockIntentPickerDelegate : public WebIntentPickerDelegate { |
| 13 public WebIntentPickerTestBase { | 16 public: |
| 17 MockIntentPickerDelegate() {} | |
| 18 virtual ~MockIntentPickerDelegate() {} | |
| 19 | |
| 20 MOCK_METHOD2(OnServiceChosen, void(const GURL& url, Disposition disposition)); | |
| 21 MOCK_METHOD1(OnInlineDispositionWebContentsCreated, | |
| 22 void(content::WebContents* web_contents)); | |
| 23 MOCK_METHOD1(OnExtensionInstallRequested, void(const std::string& id)); | |
| 24 MOCK_METHOD0(OnCancelled, void()); | |
| 25 MOCK_METHOD0(OnClosing, void()); | |
| 14 }; | 26 }; |
| 15 | 27 |
| 28 class WebIntentSheetControllerBrowserTest : public InProcessBrowserTest { | |
| 29 public: | |
| 30 void CreateBubble(TabContentsWrapper* wrapper); | |
|
Robert Sesek
2012/04/17 23:15:39
nit: indented 1 too many
groby-ooo-7-16
2012/04/25 23:19:16
Done.
| |
| 31 void CreatePicker(); | |
| 32 | |
| 33 WebIntentPickerSheetController* controller_; // Weak, owns self. | |
| 34 NSWindow* window_; // Weak, owned by controller. | |
| 35 scoped_ptr<WebIntentPickerCocoa> picker_; | |
| 36 MockIntentPickerDelegate delegate_; | |
| 37 WebIntentPickerModel model_; // The model used by the picker | |
| 38 }; | |
| 39 | |
| 40 void WebIntentSheetControllerBrowserTest::CreateBubble( | |
| 41 TabContentsWrapper* wrapper) { | |
| 42 picker_.reset(new WebIntentPickerCocoa(NULL, wrapper, &delegate_, &model_)); | |
| 43 | |
| 44 controller_ = | |
| 45 [[WebIntentPickerSheetController alloc] initWithPicker:picker_.get()]; | |
| 46 window_ = [controller_ window]; | |
| 47 [controller_ showWindow:nil]; | |
| 48 } | |
| 49 | |
| 50 void WebIntentSheetControllerBrowserTest::CreatePicker() { | |
| 51 picker_.reset(new WebIntentPickerCocoa()); | |
| 52 picker_->delegate_ = &delegate_; | |
| 53 picker_->model_ = &model_; | |
| 54 window_ = nil; | |
| 55 controller_ = nil; | |
| 56 } | |
| 57 | |
| 16 IN_PROC_BROWSER_TEST_F(WebIntentSheetControllerBrowserTest, CloseWillClose) { | 58 IN_PROC_BROWSER_TEST_F(WebIntentSheetControllerBrowserTest, CloseWillClose) { |
| 17 CreateBubble(browser()->GetSelectedTabContentsWrapper()); | 59 CreateBubble(browser()->GetSelectedTabContentsWrapper()); |
| 18 | 60 |
| 19 EXPECT_CALL(delegate_, OnCancelled()).Times(0); | 61 EXPECT_CALL(delegate_, OnCancelled()).Times(0); |
| 20 EXPECT_CALL(delegate_, OnClosing()); | 62 EXPECT_CALL(delegate_, OnClosing()); |
| 21 picker_->Close(); | 63 picker_->Close(); |
| 22 | 64 |
| 23 ignore_result(picker_.release()); // Closing |picker_| will destruct it. | 65 ignore_result(picker_.release()); // Closing |picker_| will destruct it. |
| 24 } | 66 } |
| 25 | 67 |
| 26 IN_PROC_BROWSER_TEST_F(WebIntentSheetControllerBrowserTest, | 68 IN_PROC_BROWSER_TEST_F(WebIntentSheetControllerBrowserTest, |
| 27 DontCancelAfterServiceInvokation) { | 69 DontCancelAfterServiceInvokation) { |
| 28 CreateBubble(browser()->GetSelectedTabContentsWrapper()); | 70 CreateBubble(browser()->GetSelectedTabContentsWrapper()); |
| 29 | 71 |
| 30 GURL url; | 72 GURL url; |
| 31 model_.AddInstalledService(string16(), url, | 73 model_.AddInstalledService(string16(), url, |
| 32 WebIntentPickerModel::DISPOSITION_WINDOW); | 74 WebIntentPickerModel::DISPOSITION_WINDOW); |
| 33 | 75 |
| 34 EXPECT_CALL(delegate_, OnServiceChosen( | 76 EXPECT_CALL(delegate_, OnServiceChosen( |
| 35 url, WebIntentPickerModel::DISPOSITION_WINDOW)); | 77 url, WebIntentPickerModel::DISPOSITION_WINDOW)); |
| 36 EXPECT_CALL(delegate_, OnCancelled()).Times(0); | 78 EXPECT_CALL(delegate_, OnCancelled()).Times(0); |
| 37 EXPECT_CALL(delegate_, OnClosing()); | 79 EXPECT_CALL(delegate_, OnClosing()); |
| 38 | 80 |
| 39 picker_->OnServiceChosen(0); | 81 picker_->OnServiceChosen(0); |
| 40 picker_->Close(); | 82 picker_->Close(); |
| 41 | 83 |
| 42 ignore_result(picker_.release()); // Closing |picker_| will destruct it. | 84 ignore_result(picker_.release()); // Closing |picker_| will destruct it. |
| 43 } | 85 } |
| 44 | 86 |
| 87 IN_PROC_BROWSER_TEST_F(WebIntentSheetControllerBrowserTest, | |
| 88 OnCancelledWillSignalClose) { | |
| 89 CreatePicker(); | |
| 90 EXPECT_CALL(delegate_, OnCancelled()); | |
| 91 EXPECT_CALL(delegate_, OnClosing()); | |
| 92 picker_->OnCancelled(); | |
| 93 | |
| 94 ignore_result(picker_.release()); // Closing |picker_| will destruct it. | |
| 95 } | |
| OLD | NEW |