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