| Index: ceee/ie/plugin/bho/executor_unittest.cc
|
| ===================================================================
|
| --- ceee/ie/plugin/bho/executor_unittest.cc (revision 66307)
|
| +++ ceee/ie/plugin/bho/executor_unittest.cc (working copy)
|
| @@ -19,6 +19,7 @@
|
| #include "ceee/ie/common/ie_util.h"
|
| #include "ceee/ie/common/mock_ie_tab_interfaces.h"
|
| #include "ceee/ie/plugin/bho/executor.h"
|
| +#include "ceee/ie/plugin/bho/infobar_manager.h"
|
| #include "ceee/ie/testing/mock_broker_and_friends.h"
|
| #include "ceee/ie/testing/mock_frame_event_handler_host.h"
|
| #include "ceee/common/initializing_coclass.h"
|
| @@ -80,6 +81,15 @@
|
| MOCK_METHOD1_WITH_CALLTYPE(__stdcall, Teardown, HRESULT(long));
|
| };
|
|
|
| +class MockInfobarManager : public infobar_api::InfobarManager {
|
| + public:
|
| + MockInfobarManager() : InfobarManager(kGoodWindow) {}
|
| + MOCK_METHOD4(Show, HRESULT(infobar_api::InfobarType, int,
|
| + const std::wstring&, bool));
|
| + MOCK_METHOD1(Hide, HRESULT(infobar_api::InfobarType));
|
| + MOCK_METHOD0(HideAll, void());
|
| +};
|
| +
|
| TEST(ExecutorCreator, ProperTearDownOnDestruction) {
|
| StrictMock<TestingMockExecutorCreatorTeardown>* executor_creator = NULL;
|
| CComPtr<ICeeeExecutorCreator> executor_creator_keeper;
|
| @@ -315,6 +325,14 @@
|
| void set_id(HWND hwnd) {
|
| hwnd_ = hwnd;
|
| }
|
| + void InitializeInfobarManager(MockInfobarManager** manager) {
|
| + ASSERT_TRUE(manager != NULL);
|
| + *manager = new MockInfobarManager();
|
| + infobar_manager_.reset(*manager);
|
| + }
|
| + void TerminateInfobarManager() {
|
| + infobar_manager_.reset(NULL);
|
| + }
|
| static BOOL MockEnumChildWindows(HWND, WNDENUMPROC, LPARAM p) {
|
| std::vector<HWND>* tab_windows = reinterpret_cast<std::vector<HWND>*>(p);
|
| *tab_windows = tab_windows_;
|
| @@ -1083,6 +1101,54 @@
|
| EXPECT_EQ(S_OK, executor_->CookieStoreIsRegistered());
|
| }
|
|
|
| -// TODO(vadimb@google.com): Add unit tests for infobar APIs.
|
| +TEST_F(ExecutorTests, ShowInfobar) {
|
| + testing::LogDisabler no_dchecks;
|
| + CComBSTR url(L"/infobar/test.html");
|
| + CComBSTR empty_url(L"");
|
| + CComBSTR extension_id(L"abcdefjh");
|
|
|
| + // Calling when manager has not been initialized.
|
| + EXPECT_HRESULT_FAILED(executor_->ShowInfobar(url, NULL));
|
| +
|
| + // Initializing the manager and calling it with different parameters.
|
| + MockInfobarManager* manager;
|
| + executor_->InitializeInfobarManager(&manager);
|
| +
|
| + EXPECT_CALL(*manager, Show(infobar_api::TOP_INFOBAR, _,
|
| + std::wstring(url.m_str), true)).
|
| + WillOnce(Return(S_OK));
|
| + EXPECT_CALL(mock_window_utils_, GetTopLevelParent(_)).
|
| + WillRepeatedly(Return(kGoodWindow));
|
| + CeeeWindowHandle window_handle;
|
| +
|
| + EXPECT_HRESULT_SUCCEEDED(executor_->ShowInfobar(url, &window_handle));
|
| + EXPECT_EQ(reinterpret_cast<CeeeWindowHandle>(kGoodWindow), window_handle);
|
| +
|
| + EXPECT_CALL(*manager, HideAll()).Times(1);
|
| + EXPECT_HRESULT_SUCCEEDED(executor_->ShowInfobar(empty_url, &window_handle));
|
| + EXPECT_EQ(0, window_handle);
|
| +
|
| + EXPECT_CALL(*manager, Show(infobar_api::TOP_INFOBAR, _,
|
| + std::wstring(url.m_str), true)).
|
| + WillOnce(Return(E_FAIL));
|
| + EXPECT_HRESULT_FAILED(executor_->ShowInfobar(url, &window_handle));
|
| + EXPECT_EQ(0, window_handle);
|
| +
|
| + EXPECT_CALL(*manager, HideAll()).Times(1);
|
| + EXPECT_HRESULT_SUCCEEDED(executor_->OnTopFrameBeforeNavigate(url));
|
| +
|
| + EXPECT_HRESULT_SUCCEEDED(executor_->SetExtensionId(extension_id));
|
| + std::wstring full_url(L"chrome-extension://");
|
| + full_url += extension_id.m_str;
|
| + full_url += url.m_str;
|
| + EXPECT_CALL(*manager, Show(infobar_api::TOP_INFOBAR, _, full_url, true)).
|
| + WillOnce(Return(S_OK));
|
| + EXPECT_HRESULT_SUCCEEDED(executor_->ShowInfobar(url, &window_handle));
|
| +
|
| + // Have to destroy the manager before LogDisabler from this test goes out of
|
| + // scope.
|
| + EXPECT_CALL(user32_, IsWindow(NULL)).WillRepeatedly(Return(FALSE));
|
| + executor_->TerminateInfobarManager();
|
| +}
|
| +
|
| } // namespace
|
|
|