1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464
|
/*
* Copyright (C) 2012 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef WebViewHost_h
#define WebViewHost_h
#include "MockSpellCheck.h"
#include "TestNavigationController.h"
#include "WebAccessibilityNotification.h"
#include "WebCursorInfo.h"
#include "WebFrameClient.h"
#include "WebIntentRequest.h"
#include "WebPrerendererClient.h"
#include "WebSpellCheckClient.h"
#include "WebTask.h"
#include "WebTestDelegate.h"
#include "WebTestProxy.h"
#include "WebViewClient.h"
#include <wtf/HashMap.h>
#include <wtf/HashSet.h>
#include <wtf/Vector.h>
#include <wtf/text/WTFString.h>
class DRTTestRunner;
class MockWebSpeechInputController;
class MockWebSpeechRecognizer;
class SkCanvas;
class TestShell;
class WebUserMediaClientMock;
namespace WebKit {
class WebFrame;
class WebDeviceOrientationClient;
class WebDeviceOrientationClientMock;
class WebGeolocationClient;
class WebGeolocationClientMock;
class WebGeolocationServiceMock;
class WebIntentServiceInfo;
class WebSerializedScriptValue;
class WebSharedWorkerClient;
class WebSpeechInputController;
class WebSpeechInputListener;
class WebURL;
struct WebRect;
struct WebURLError;
struct WebWindowFeatures;
}
namespace webkit_support {
class MediaStreamUtil;
class TestMediaStreamClient;
}
class WebViewHost : public WebKit::WebViewClient, public WebKit::WebFrameClient, public NavigationHost,
public WebKit::WebPrerendererClient, public WebKit::WebSpellCheckClient,
public WebTestRunner::WebTestDelegate {
public:
WebViewHost(TestShell*);
virtual ~WebViewHost();
void setWebWidget(WebKit::WebWidget*);
WebKit::WebView* webView() const;
WebKit::WebWidget* webWidget() const;
WebTestRunner::WebTestProxyBase* proxy() const;
void setProxy(WebTestRunner::WebTestProxyBase*);
void reset();
void setSelectTrailingWhitespaceEnabled(bool);
void setSmartInsertDeleteEnabled(bool);
void setLogConsoleOutput(bool);
void waitForPolicyDelegate();
void setCustomPolicyDelegate(bool, bool);
WebKit::WebFrame* topLoadingFrame() { return m_topLoadingFrame; }
void setBlockRedirects(bool block) { m_blocksRedirects = block; }
void setRequestReturnNull(bool returnNull) { m_requestReturnNull = returnNull; }
void setPendingExtraData(PassOwnPtr<TestShellExtraData>);
void setDeviceScaleFactor(float);
void paintRect(const WebKit::WebRect&);
void paintInvalidatedRegion();
void paintPagesWithBoundaries();
SkCanvas* canvas();
void displayRepaintMask();
void loadURLForFrame(const WebKit::WebURL&, const WebKit::WebString& frameName);
TestNavigationController* navigationController() { return m_navigationController.get(); }
void addClearHeader(const WTF::String& header) { m_clearHeaders.add(header); }
const HashSet<WTF::String>& clearHeaders() const { return m_clearHeaders; }
void closeWidget();
#if ENABLE(INPUT_SPEECH)
MockWebSpeechInputController* speechInputControllerMock() { return m_speechInputControllerMock.get(); }
#endif
#if ENABLE(SCRIPTED_SPEECH)
MockWebSpeechRecognizer* mockSpeechRecognizer() { return m_mockSpeechRecognizer.get(); }
#endif
#if ENABLE(POINTER_LOCK)
void didAcquirePointerLock();
void didNotAcquirePointerLock();
void didLosePointerLock();
void setPointerLockWillRespondAsynchronously() { m_pointerLockPlannedResult = PointerLockWillRespondAsync; }
void setPointerLockWillFailSynchronously() { m_pointerLockPlannedResult = PointerLockWillFailSync; }
#endif
// WebTestDelegate.
virtual WebKit::WebContextMenuData* lastContextMenuData() const OVERRIDE;
virtual void clearContextMenuData() OVERRIDE;
virtual void setEditCommand(const std::string& name, const std::string& value) OVERRIDE;
virtual void clearEditCommand() OVERRIDE;
virtual void fillSpellingSuggestionList(const WebKit::WebString& word, WebKit::WebVector<WebKit::WebString>* suggestions) OVERRIDE;
virtual void setGamepadData(const WebKit::WebGamepads&) OVERRIDE;
virtual void printMessage(const std::string& message) OVERRIDE;
virtual void postTask(WebTestRunner::WebTask*) OVERRIDE;
virtual void postDelayedTask(WebTestRunner::WebTask*, long long ms) OVERRIDE;
virtual WebKit::WebString registerIsolatedFileSystem(const WebKit::WebVector<WebKit::WebString>& absoluteFilenames) OVERRIDE;
virtual long long getCurrentTimeInMillisecond() OVERRIDE;
virtual WebKit::WebString getAbsoluteWebStringFromUTF8Path(const std::string& path) OVERRIDE;
// NavigationHost
virtual bool navigate(const TestNavigationEntry&, bool reload);
// WebKit::WebPrerendererClient
virtual void willAddPrerender(WebKit::WebPrerender*) OVERRIDE;
// WebKit::WebSpellCheckClient
virtual void spellCheck(const WebKit::WebString&, int& offset, int& length, WebKit::WebVector<WebKit::WebString>* optionalSuggestions);
virtual void checkTextOfParagraph(const WebKit::WebString&, WebKit::WebTextCheckingTypeMask, WebKit::WebVector<WebKit::WebTextCheckingResult>*);
virtual void requestCheckingOfText(const WebKit::WebString&, WebKit::WebTextCheckingCompletion*);
virtual WebKit::WebString autoCorrectWord(const WebKit::WebString&);
// WebKit::WebViewClient
virtual WebKit::WebView* createView(WebKit::WebFrame*, const WebKit::WebURLRequest&, const WebKit::WebWindowFeatures&, const WebKit::WebString&, WebKit::WebNavigationPolicy);
virtual WebKit::WebWidget* createPopupMenu(WebKit::WebPopupType);
virtual WebKit::WebWidget* createPopupMenu(const WebKit::WebPopupMenuInfo&);
virtual WebKit::WebStorageNamespace* createSessionStorageNamespace(unsigned quota);
virtual WebKit::WebCompositorOutputSurface* createOutputSurface();
virtual void didAddMessageToConsole(const WebKit::WebConsoleMessage&, const WebKit::WebString& sourceName, unsigned sourceLine);
virtual void didStartLoading();
virtual void didStopLoading();
virtual bool shouldBeginEditing(const WebKit::WebRange&);
virtual bool shouldEndEditing(const WebKit::WebRange&);
virtual bool shouldInsertNode(const WebKit::WebNode&, const WebKit::WebRange&, WebKit::WebEditingAction);
virtual bool shouldInsertText(const WebKit::WebString&, const WebKit::WebRange&, WebKit::WebEditingAction);
virtual bool shouldChangeSelectedRange(const WebKit::WebRange& from, const WebKit::WebRange& to, WebKit::WebTextAffinity, bool stillSelecting);
virtual bool shouldDeleteRange(const WebKit::WebRange&);
virtual bool shouldApplyStyle(const WebKit::WebString& style, const WebKit::WebRange&);
virtual bool isSmartInsertDeleteEnabled();
virtual bool isSelectTrailingWhitespaceEnabled();
virtual void didBeginEditing();
virtual void didChangeSelection(bool isSelectionEmpty);
virtual void didChangeContents();
virtual void didEndEditing();
virtual bool handleCurrentKeyboardEvent();
virtual void runModalAlertDialog(WebKit::WebFrame*, const WebKit::WebString&);
virtual bool runModalConfirmDialog(WebKit::WebFrame*, const WebKit::WebString&);
virtual bool runModalPromptDialog(WebKit::WebFrame*, const WebKit::WebString& message, const WebKit::WebString& defaultValue, WebKit::WebString* actualValue);
virtual bool runModalBeforeUnloadDialog(WebKit::WebFrame*, const WebKit::WebString&);
virtual void showContextMenu(WebKit::WebFrame*, const WebKit::WebContextMenuData&);
virtual void setStatusText(const WebKit::WebString&);
virtual void didUpdateLayout();
virtual void navigateBackForwardSoon(int offset);
virtual int historyBackListCount();
virtual int historyForwardListCount();
#if ENABLE(NOTIFICATIONS)
virtual WebKit::WebNotificationPresenter* notificationPresenter();
#endif
virtual WebKit::WebGeolocationClient* geolocationClient();
#if ENABLE(INPUT_SPEECH)
virtual WebKit::WebSpeechInputController* speechInputController(WebKit::WebSpeechInputListener*);
#endif
#if ENABLE(SCRIPTED_SPEECH)
virtual WebKit::WebSpeechRecognizer* speechRecognizer() OVERRIDE;
#endif
virtual WebKit::WebDeviceOrientationClient* deviceOrientationClient() OVERRIDE;
#if ENABLE(MEDIA_STREAM)
virtual WebKit::WebUserMediaClient* userMediaClient();
#endif
virtual void printPage(WebKit::WebFrame*);
// WebKit::WebWidgetClient
virtual void didAutoResize(const WebKit::WebSize& newSize);
virtual void scheduleAnimation();
virtual void didFocus();
virtual void didBlur();
virtual void didChangeCursor(const WebKit::WebCursorInfo&);
virtual void closeWidgetSoon();
virtual void show(WebKit::WebNavigationPolicy);
virtual void runModal();
virtual bool enterFullScreen();
virtual void exitFullScreen();
virtual WebKit::WebRect windowRect();
virtual void setWindowRect(const WebKit::WebRect&);
virtual WebKit::WebRect rootWindowRect();
virtual WebKit::WebRect windowResizerRect();
virtual WebKit::WebScreenInfo screenInfo();
#if ENABLE(POINTER_LOCK)
virtual bool requestPointerLock();
virtual void requestPointerUnlock();
virtual bool isPointerLocked();
#endif
// WebKit::WebFrameClient
virtual WebKit::WebPlugin* createPlugin(WebKit::WebFrame*, const WebKit::WebPluginParams&);
virtual WebKit::WebMediaPlayer* createMediaPlayer(WebKit::WebFrame*, const WebKit::WebURL&, WebKit::WebMediaPlayerClient*);
virtual WebKit::WebApplicationCacheHost* createApplicationCacheHost(WebKit::WebFrame*, WebKit::WebApplicationCacheHostClient*);
virtual void loadURLExternally(WebKit::WebFrame*, const WebKit::WebURLRequest&, WebKit::WebNavigationPolicy);
virtual void loadURLExternally(WebKit::WebFrame*, const WebKit::WebURLRequest&, WebKit::WebNavigationPolicy, const WebKit::WebString& downloadName);
virtual WebKit::WebNavigationPolicy decidePolicyForNavigation(
WebKit::WebFrame*, const WebKit::WebURLRequest&,
WebKit::WebNavigationType, const WebKit::WebNode&,
WebKit::WebNavigationPolicy, bool isRedirect);
virtual bool canHandleRequest(WebKit::WebFrame*, const WebKit::WebURLRequest&);
virtual WebKit::WebURLError cannotHandleRequestError(WebKit::WebFrame*, const WebKit::WebURLRequest&);
virtual WebKit::WebURLError cancelledError(WebKit::WebFrame*, const WebKit::WebURLRequest&);
virtual void unableToImplementPolicyWithError(WebKit::WebFrame*, const WebKit::WebURLError&);
virtual void willPerformClientRedirect(
WebKit::WebFrame*, const WebKit::WebURL& from, const WebKit::WebURL& to,
double interval, double fireTime);
virtual void didCancelClientRedirect(WebKit::WebFrame*);
virtual void didCreateDataSource(WebKit::WebFrame*, WebKit::WebDataSource*);
virtual void didStartProvisionalLoad(WebKit::WebFrame*);
virtual void didReceiveServerRedirectForProvisionalLoad(WebKit::WebFrame*);
virtual void didFailProvisionalLoad(WebKit::WebFrame*, const WebKit::WebURLError&);
virtual void didCommitProvisionalLoad(WebKit::WebFrame*, bool isNewNavigation);
virtual void didClearWindowObject(WebKit::WebFrame*);
virtual void didReceiveTitle(WebKit::WebFrame*, const WebKit::WebString&, WebKit::WebTextDirection);
virtual void didFinishDocumentLoad(WebKit::WebFrame*);
virtual void didHandleOnloadEvents(WebKit::WebFrame*);
virtual void didFailLoad(WebKit::WebFrame*, const WebKit::WebURLError&);
virtual void didFinishLoad(WebKit::WebFrame*);
virtual void didNavigateWithinPage(WebKit::WebFrame*, bool isNewNavigation);
virtual void didChangeLocationWithinPage(WebKit::WebFrame*);
virtual void assignIdentifierToRequest(WebKit::WebFrame*, unsigned identifier, const WebKit::WebURLRequest&);
virtual void removeIdentifierForRequest(unsigned identifier);
virtual void willRequestResource(WebKit::WebFrame*, const WebKit::WebCachedURLRequest&);
virtual void willSendRequest(WebKit::WebFrame*, unsigned identifier, WebKit::WebURLRequest&, const WebKit::WebURLResponse&);
virtual void didReceiveResponse(WebKit::WebFrame*, unsigned identifier, const WebKit::WebURLResponse&);
virtual void didFinishResourceLoad(WebKit::WebFrame*, unsigned identifier);
virtual void didFailResourceLoad(WebKit::WebFrame*, unsigned identifier, const WebKit::WebURLError&);
virtual void didDisplayInsecureContent(WebKit::WebFrame*);
virtual void didRunInsecureContent(WebKit::WebFrame*, const WebKit::WebSecurityOrigin&, const WebKit::WebURL&);
virtual void didDetectXSS(WebKit::WebFrame*, const WebKit::WebURL&, bool didBlockEntirePage);
virtual void openFileSystem(WebKit::WebFrame*, WebKit::WebFileSystem::Type, long long size, bool create, WebKit::WebFileSystemCallbacks*);
virtual void deleteFileSystem(WebKit::WebFrame*, WebKit::WebFileSystem::Type, WebKit::WebFileSystemCallbacks*);
virtual bool willCheckAndDispatchMessageEvent(
WebKit::WebFrame* sourceFrame, WebKit::WebFrame* targetFrame,
WebKit::WebSecurityOrigin target, WebKit::WebDOMMessageEvent);
virtual void registerIntentService(WebKit::WebFrame*, const WebKit::WebIntentServiceInfo&);
virtual void dispatchIntent(WebKit::WebFrame*, const WebKit::WebIntentRequest&);
virtual void deliveredIntentResult(WebKit::WebFrame*, int, const WebKit::WebSerializedScriptValue&);
virtual void deliveredIntentFailure(WebKit::WebFrame*, int, const WebKit::WebSerializedScriptValue&);
WebKit::WebDeviceOrientationClientMock* deviceOrientationClientMock();
// Spellcheck related helper APIs
MockSpellCheck* mockSpellCheck();
void finishLastTextCheck();
// Geolocation client mocks for DRTTestRunner
WebKit::WebGeolocationClientMock* geolocationClientMock();
// Pending task list, Note taht the method is referred from WebMethodTask class.
WebTestRunner::WebTaskList* taskList() { return &m_taskList; }
// The current web intents request.
WebKit::WebIntentRequest* currentIntentRequest() { return &m_currentRequest; }
private:
class HostMethodTask : public WebTestRunner::WebMethodTask<WebViewHost> {
public:
typedef void (WebViewHost::*CallbackMethodType)();
HostMethodTask(WebViewHost* object, CallbackMethodType callback)
: WebTestRunner::WebMethodTask<WebViewHost>(object)
, m_callback(callback)
{ }
virtual void runIfValid() { (m_object->*m_callback)(); }
private:
CallbackMethodType m_callback;
};
DRTTestRunner* testRunner() const;
// Called the title of the page changes.
// Can be used to update the title of the window.
void setPageTitle(const WebKit::WebString&);
// Called when the URL of the page changes.
// Extracts the URL and forwards on to SetAddressBarURL().
void updateAddressBar(WebKit::WebView*);
// Called when the URL of the page changes.
// Should be used to update the text of the URL bar.
void setAddressBarURL(const WebKit::WebURL&);
void enterFullScreenNow();
void exitFullScreenNow();
// In the Mac code, this is called to trigger the end of a test after the
// page has finished loading. From here, we can generate the dump for the
// test.
void locationChangeDone(WebKit::WebFrame*);
void updateForCommittedLoad(WebKit::WebFrame*, bool isNewNavigation);
void updateURL(WebKit::WebFrame*);
void updateSessionHistory(WebKit::WebFrame*);
// Dumping a frame to the console.
void printFrameDescription(WebKit::WebFrame*);
// Dumping the user gesture status to the console.
void printFrameUserGestureStatus(WebKit::WebFrame*, const char*);
bool hasWindow() const { return m_hasWindow; }
void resetScrollRect();
void discardBackingStore();
#if ENABLE(MEDIA_STREAM)
WebUserMediaClientMock* userMediaClientMock();
webkit_support::TestMediaStreamClient* testMediaStreamClient();
#endif
// Causes navigation actions just printout the intended navigation instead
// of taking you to the page. This is used for cases like mailto, where you
// don't actually want to open the mail program.
bool m_policyDelegateEnabled;
// Toggles the behavior of the policy delegate. If true, then navigations
// will be allowed. Otherwise, they will be ignored (dropped).
bool m_policyDelegateIsPermissive;
// If true, the policy delegate will signal layout test completion.
bool m_policyDelegateShouldNotifyDone;
// Non-owning pointer. The WebViewHost instance is owned by this TestShell instance.
TestShell* m_shell;
// Non-owning pointer. This class needs to be wrapped in a WebTestProxy. This is the pointer to the WebTestProxyBase.
WebTestRunner::WebTestProxyBase* m_proxy;
// This delegate works for the following widget.
WebKit::WebWidget* m_webWidget;
// This is non-0 IFF a load is in progress.
WebKit::WebFrame* m_topLoadingFrame;
// For tracking session history. See RenderView.
int m_pageId;
int m_lastPageIdUpdated;
OwnPtr<TestShellExtraData> m_pendingExtraData;
// Maps resource identifiers to a descriptive string.
typedef HashMap<unsigned, std::string> ResourceMap;
ResourceMap m_resourceIdentifierMap;
void printResourceDescription(unsigned identifier);
WebKit::WebCursorInfo m_currentCursor;
bool m_hasWindow;
bool m_inModalLoop;
WebKit::WebRect m_windowRect;
// true if we want to enable smart insert/delete.
bool m_smartInsertDeleteEnabled;
// true if we want to enable selection of trailing whitespaces
bool m_selectTrailingWhitespaceEnabled;
// true if whatever is sent to the console should be logged to stdout.
bool m_logConsoleOutput;
// Set of headers to clear in willSendRequest.
HashSet<WTF::String> m_clearHeaders;
// true if we should block any redirects
bool m_blocksRedirects;
// true if we should block (set an empty request for) any requests
bool m_requestReturnNull;
// Edit command associated to the current keyboard event.
std::string m_editCommandName;
std::string m_editCommandValue;
// The mock spellchecker used in spellCheck().
MockSpellCheck m_spellcheck;
// Painting.
OwnPtr<SkCanvas> m_canvas;
WebKit::WebRect m_paintRect;
bool m_isPainting;
OwnPtr<WebKit::WebContextMenuData> m_lastContextMenuData;
// Geolocation
OwnPtr<WebKit::WebGeolocationClientMock> m_geolocationClientMock;
OwnPtr<WebKit::WebDeviceOrientationClientMock> m_deviceOrientationClientMock;
#if ENABLE(INPUT_SPEECH)
OwnPtr<MockWebSpeechInputController> m_speechInputControllerMock;
#endif
#if ENABLE(SCRIPTED_SPEECH)
OwnPtr<MockWebSpeechRecognizer> m_mockSpeechRecognizer;
#endif
#if ENABLE(MEDIA_STREAM)
OwnPtr<WebUserMediaClientMock> m_userMediaClientMock;
OwnPtr<webkit_support::TestMediaStreamClient> m_testMediaStreamClient;
#endif
OwnPtr<TestNavigationController> m_navigationController;
WebKit::WebString m_lastRequestedTextCheckString;
WebKit::WebTextCheckingCompletion* m_lastRequestedTextCheckingCompletion;
WebTestRunner::WebTaskList m_taskList;
Vector<WebKit::WebWidget*> m_popupmenus;
#if ENABLE(POINTER_LOCK)
bool m_pointerLocked;
enum {
PointerLockWillSucceed,
PointerLockWillRespondAsync,
PointerLockWillFailSync
} m_pointerLockPlannedResult;
#endif
// For web intents: holds the current request, if any.
WebKit::WebIntentRequest m_currentRequest;
};
#endif // WebViewHost_h
|