| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 // | |
| 5 // Unit tests for ChromeFrameActivex. | |
| 6 | |
| 7 #include "chrome_frame/chrome_frame_activex.h" | |
| 8 | |
| 9 #include "ceee/common/initializing_coclass.h" | |
| 10 #include "ceee/testing/utils/test_utils.h" | |
| 11 #include "ceee/testing/utils/mock_com.h" | |
| 12 #include "chrome_frame/test/chrome_tab_mocks.h" | |
| 13 #include "gtest/gtest.h" | |
| 14 #include "gmock/gmock.h" | |
| 15 | |
| 16 namespace { | |
| 17 | |
| 18 using testing::_; | |
| 19 using testing::AddRef; | |
| 20 using testing::DoAll; | |
| 21 using testing::IOleClientSiteMockImpl; | |
| 22 using testing::IServiceProviderMockImpl; | |
| 23 using testing::MockIChromeFramePrivileged; | |
| 24 using testing::Return; | |
| 25 using testing::SetArgumentPointee; | |
| 26 using testing::StrictMock; | |
| 27 | |
| 28 // Just to unhide the static function. | |
| 29 class TestingChromeFrameActivex : public ChromeFrameActivex { | |
| 30 public: | |
| 31 static HRESULT TestingShouldShowVersionMismatchDialog( | |
| 32 bool is_privileged, IOleClientSite* client_site) { | |
| 33 return ShouldShowVersionMismatchDialog(is_privileged, client_site); | |
| 34 } | |
| 35 }; | |
| 36 | |
| 37 class MockChromeFrameClientSite | |
| 38 : public CComObjectRootEx<CComSingleThreadModel>, | |
| 39 public StrictMock<IOleClientSiteMockImpl>, | |
| 40 public StrictMock<IServiceProviderMockImpl> { | |
| 41 public: | |
| 42 DECLARE_NOT_AGGREGATABLE(MockChromeFrameClientSite) | |
| 43 BEGIN_COM_MAP(MockChromeFrameClientSite) | |
| 44 COM_INTERFACE_ENTRY(IOleClientSite) | |
| 45 COM_INTERFACE_ENTRY(IServiceProvider) | |
| 46 END_COM_MAP() | |
| 47 DECLARE_PROTECT_FINAL_CONSTRUCT() | |
| 48 | |
| 49 HRESULT Initialize(MockChromeFrameClientSite** client_site) { | |
| 50 *client_site = this; | |
| 51 return S_OK; | |
| 52 } | |
| 53 }; | |
| 54 | |
| 55 TEST(ChromeFrameActivex, ShouldShowVersionMismatchDialog) { | |
| 56 // If not privileged, we always show the dialog. | |
| 57 ASSERT_TRUE( | |
| 58 TestingChromeFrameActivex::TestingShouldShowVersionMismatchDialog( | |
| 59 false, NULL)); | |
| 60 | |
| 61 MockChromeFrameClientSite* cs_keeper; | |
| 62 ScopedComPtr<IOleClientSite> cs; | |
| 63 ASSERT_HRESULT_SUCCEEDED( | |
| 64 InitializingCoClass<MockChromeFrameClientSite>::CreateInitialized( | |
| 65 &cs_keeper, cs.Receive())); | |
| 66 | |
| 67 MockIChromeFramePrivileged* cfp_keeper; | |
| 68 ScopedComPtr<IChromeFramePrivileged> cfp; | |
| 69 ASSERT_HRESULT_SUCCEEDED( | |
| 70 InitializingCoClass<MockIChromeFramePrivileged>::CreateInitialized( | |
| 71 &cfp_keeper, cfp.Receive())); | |
| 72 | |
| 73 EXPECT_CALL(*cs_keeper, QueryService(SID_ChromeFramePrivileged, | |
| 74 IID_IChromeFramePrivileged, _)) | |
| 75 .WillRepeatedly(DoAll(AddRef(cfp.get()), | |
| 76 SetArgumentPointee<2>(static_cast<void*>(cfp)), | |
| 77 Return(S_OK))); | |
| 78 | |
| 79 EXPECT_CALL(*cfp_keeper, ShouldShowVersionMismatchDialog()) | |
| 80 .WillOnce(Return(S_OK)); | |
| 81 ASSERT_TRUE( | |
| 82 TestingChromeFrameActivex::TestingShouldShowVersionMismatchDialog( | |
| 83 true, cs_keeper)); | |
| 84 | |
| 85 EXPECT_CALL(*cfp_keeper, ShouldShowVersionMismatchDialog()) | |
| 86 .WillOnce(Return(S_FALSE)); | |
| 87 ASSERT_FALSE( | |
| 88 TestingChromeFrameActivex::TestingShouldShowVersionMismatchDialog( | |
| 89 true, cs_keeper)); | |
| 90 | |
| 91 // Also test that we fail safe, showing the dialog unless we got | |
| 92 // an affirmative do-not-show. | |
| 93 EXPECT_CALL(*cfp_keeper, ShouldShowVersionMismatchDialog()) | |
| 94 .WillOnce(Return(E_UNEXPECTED)); | |
| 95 ASSERT_TRUE( | |
| 96 TestingChromeFrameActivex::TestingShouldShowVersionMismatchDialog( | |
| 97 true, cs_keeper)); | |
| 98 } | |
| 99 | |
| 100 } // namespace | |
| OLD | NEW |