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