WinLauncher fails to download files.
[WebKit-https.git] / Tools / WinLauncher / WinLauncher.h
1 /*
2  * Copyright (C) 2014 Apple Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 #include "PageLoadTestClient.h"
27 #include <WebKit/WebKit.h>
28 #include <memory>
29 #include <vector>
30
31 typedef _com_ptr_t<_com_IIID<IWebFrame, &__uuidof(IWebFrame)>> IWebFramePtr;
32 typedef _com_ptr_t<_com_IIID<IWebView, &__uuidof(IWebView)>> IWebViewPtr;
33 typedef _com_ptr_t<_com_IIID<IWebViewPrivate, &__uuidof(IWebViewPrivate)>> IWebViewPrivatePtr;
34 typedef _com_ptr_t<_com_IIID<IWebFrameLoadDelegate, &__uuidof(IWebFrameLoadDelegate)>> IWebFrameLoadDelegatePtr;
35 typedef _com_ptr_t<_com_IIID<IWebHistory, &__uuidof(IWebHistory)>> IWebHistoryPtr;
36 typedef _com_ptr_t<_com_IIID<IWebHistoryItem, &__uuidof(IWebHistoryItem)>> IWebHistoryItemPtr;
37 typedef _com_ptr_t<_com_IIID<IWebPreferences, &__uuidof(IWebPreferences)>> IWebPreferencesPtr;
38 typedef _com_ptr_t<_com_IIID<IWebPreferencesPrivate, &__uuidof(IWebPreferencesPrivate)>> IWebPreferencesPrivatePtr;
39 typedef _com_ptr_t<_com_IIID<IWebUIDelegate, &__uuidof(IWebUIDelegate)>> IWebUIDelegatePtr;
40 typedef _com_ptr_t<_com_IIID<IAccessibilityDelegate, &__uuidof(IAccessibilityDelegate)>> IAccessibilityDelegatePtr;
41 typedef _com_ptr_t<_com_IIID<IWebInspector, &__uuidof(IWebInspector)>> IWebInspectorPtr;
42 typedef _com_ptr_t<_com_IIID<IWebCoreStatistics, &__uuidof(IWebCoreStatistics)>> IWebCoreStatisticsPtr;
43 typedef _com_ptr_t<_com_IIID<IWebCache, &__uuidof(IWebCache)>> IWebCachePtr;
44 typedef _com_ptr_t<_com_IIID<IWebResourceLoadDelegate, &__uuidof(IWebResourceLoadDelegate)>> IWebResourceLoadDelegatePtr;
45 typedef _com_ptr_t<_com_IIID<IWebDownloadDelegate, &__uuidof(IWebDownloadDelegate)>> IWebDownloadDelegatePtr;
46
47 class WinLauncher {
48 public:
49     WinLauncher(HWND mainWnd, HWND urlBarWnd, bool useLayeredWebView = false, bool pageLoadTesting = false);
50
51     HRESULT init();
52     HRESULT prepareViews(HWND mainWnd, const RECT& clientRect, const BSTR& requestedURL, HWND& viewWnd);
53
54     HRESULT loadURL(const BSTR& passedURL);
55
56     void showLastVisitedSites(IWebView&);
57     void launchInspector();
58     void navigateForwardOrBackward(HWND hWnd, UINT menuID);
59     void navigateToHistory(HWND hWnd, UINT menuID);
60     void exitProgram();
61     bool seedInitialDefaultPreferences();
62     bool setToDefaultPreferences();
63
64     HRESULT setFrameLoadDelegate(IWebFrameLoadDelegate*);
65     HRESULT setFrameLoadDelegatePrivate(IWebFrameLoadDelegatePrivate*);
66     HRESULT setUIDelegate(IWebUIDelegate*);
67     HRESULT setAccessibilityDelegate(IAccessibilityDelegate*);
68     HRESULT setResourceLoadDelegate(IWebResourceLoadDelegate*);
69     HRESULT setDownloadDelegate(IWebDownloadDelegatePtr);
70
71     IWebPreferencesPtr standardPreferences() { return m_standardPreferences;  }
72     IWebPreferencesPrivatePtr privatePreferences() { return m_prefsPrivate; }
73     IWebFramePtr mainFrame();
74     IWebCoreStatisticsPtr statistics() { return m_statistics; }
75     IWebCachePtr webCache() { return m_webCache;  }
76     IWebViewPtr webView() { return m_webView; }
77
78     bool hasWebView() const { return !!m_webView; }
79     bool usesLayeredWebView() const { return m_useLayeredWebView; }
80     bool goBack();
81     bool goForward();
82
83     void setUserAgent(UINT menuID);
84     void setUserAgent(_bstr_t& customUAString);
85     _bstr_t userAgent();
86
87     PageLoadTestClient& pageLoadTestClient() { return *m_pageLoadTestClient; }
88
89     void resetZoom();
90     void zoomIn();
91     void zoomOut();
92
93 private:
94     std::vector<IWebHistoryItemPtr> m_historyItems;
95
96     std::unique_ptr<PageLoadTestClient> m_pageLoadTestClient;
97
98     IWebViewPtr m_webView;
99     IWebViewPrivatePtr m_webViewPrivate;
100
101     IWebHistoryPtr m_webHistory;
102     IWebInspectorPtr m_inspector;
103     IWebPreferencesPtr m_standardPreferences;
104     IWebPreferencesPrivatePtr m_prefsPrivate;
105
106     IWebFrameLoadDelegatePtr m_frameLoadDelegate;
107     IWebUIDelegatePtr m_uiDelegate;
108     IAccessibilityDelegatePtr m_accessibilityDelegate;
109     IWebResourceLoadDelegatePtr m_resourceLoadDelegate;
110     IWebDownloadDelegatePtr m_downloadDelegate;
111
112     IWebCoreStatisticsPtr m_statistics;
113     IWebCachePtr m_webCache;
114
115     HWND m_hMainWnd;
116     HWND m_hURLBarWnd;
117
118     bool m_useLayeredWebView;
119 };