Index: chrome_frame/test/chrome_frame_activex_unittest.cc |
=================================================================== |
--- chrome_frame/test/chrome_frame_activex_unittest.cc (revision 0) |
+++ chrome_frame/test/chrome_frame_activex_unittest.cc (revision 0) |
@@ -0,0 +1,100 @@ |
+// Copyright (c) 2010 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. |
+// |
+// Unit tests for ChromeFrameActivex. |
+ |
+#include "chrome_frame/chrome_frame_activex.h" |
+ |
+#include "ceee/common/initializing_coclass.h" |
+#include "ceee/testing/utils/test_utils.h" |
+#include "ceee/testing/utils/mock_com.h" |
+#include "chrome_frame/test/chrome_tab_mocks.h" |
+#include "gtest/gtest.h" |
+#include "gmock/gmock.h" |
+ |
+namespace { |
+ |
+using testing::_; |
+using testing::AddRef; |
+using testing::DoAll; |
+using testing::IOleClientSiteMockImpl; |
+using testing::IServiceProviderMockImpl; |
+using testing::MockIChromeFramePrivileged; |
+using testing::Return; |
+using testing::SetArgumentPointee; |
+using testing::StrictMock; |
+ |
+// Just to unhide the static function. |
+class TestingChromeFrameActivex : public ChromeFrameActivex { |
+ public: |
+ static HRESULT TestingShouldShowVersionMismatchDialog( |
+ bool is_privileged, IOleClientSite* client_site) { |
+ return ShouldShowVersionMismatchDialog(is_privileged, client_site); |
+ } |
+}; |
+ |
+class MockChromeFrameClientSite |
+ : public CComObjectRootEx<CComSingleThreadModel>, |
+ public StrictMock<IOleClientSiteMockImpl>, |
+ public StrictMock<IServiceProviderMockImpl> { |
+ public: |
+ DECLARE_NOT_AGGREGATABLE(MockChromeFrameClientSite) |
+ BEGIN_COM_MAP(MockChromeFrameClientSite) |
+ COM_INTERFACE_ENTRY(IOleClientSite) |
+ COM_INTERFACE_ENTRY(IServiceProvider) |
+ END_COM_MAP() |
+ DECLARE_PROTECT_FINAL_CONSTRUCT() |
+ |
+ HRESULT Initialize(MockChromeFrameClientSite** client_site) { |
+ *client_site = this; |
+ return S_OK; |
+ } |
+}; |
+ |
+TEST(ChromeFrameActivex, ShouldShowVersionMismatchDialog) { |
+ // If not privileged, we always show the dialog. |
+ ASSERT_TRUE( |
+ TestingChromeFrameActivex::TestingShouldShowVersionMismatchDialog( |
+ false, NULL)); |
+ |
+ MockChromeFrameClientSite* cs_keeper; |
+ ScopedComPtr<IOleClientSite> cs; |
+ ASSERT_HRESULT_SUCCEEDED( |
+ InitializingCoClass<MockChromeFrameClientSite>::CreateInitialized( |
+ &cs_keeper, cs.Receive())); |
+ |
+ MockIChromeFramePrivileged* cfp_keeper; |
+ ScopedComPtr<IChromeFramePrivileged> cfp; |
+ ASSERT_HRESULT_SUCCEEDED( |
+ InitializingCoClass<MockIChromeFramePrivileged>::CreateInitialized( |
+ &cfp_keeper, cfp.Receive())); |
+ |
+ EXPECT_CALL(*cs_keeper, QueryService(SID_ChromeFramePrivileged, |
+ IID_IChromeFramePrivileged, _)) |
+ .WillRepeatedly(DoAll(AddRef(cfp.get()), |
+ SetArgumentPointee<2>(static_cast<void*>(cfp)), |
+ Return(S_OK))); |
+ |
+ EXPECT_CALL(*cfp_keeper, ShouldShowVersionMismatchDialog()) |
+ .WillOnce(Return(S_OK)); |
+ ASSERT_TRUE( |
+ TestingChromeFrameActivex::TestingShouldShowVersionMismatchDialog( |
+ true, cs_keeper)); |
+ |
+ EXPECT_CALL(*cfp_keeper, ShouldShowVersionMismatchDialog()) |
+ .WillOnce(Return(S_FALSE)); |
+ ASSERT_FALSE( |
+ TestingChromeFrameActivex::TestingShouldShowVersionMismatchDialog( |
+ true, cs_keeper)); |
+ |
+ // Also test that we fail safe, showing the dialog unless we got |
+ // an affirmative do-not-show. |
+ EXPECT_CALL(*cfp_keeper, ShouldShowVersionMismatchDialog()) |
+ .WillOnce(Return(E_UNEXPECTED)); |
+ ASSERT_TRUE( |
+ TestingChromeFrameActivex::TestingShouldShowVersionMismatchDialog( |
+ true, cs_keeper)); |
+} |
+ |
+} // namespace |
Property changes on: chrome_frame\test\chrome_frame_activex_unittest.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |