InjectedBundlePage.h revision 2fc2651226baac27029e38c9d6ef883fa32084db
1/* 2 * Copyright (C) 2010 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. AND ITS CONTRIBUTORS ``AS IS'' 14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS 17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 23 * THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26#ifndef InjectedBundlePage_h 27#define InjectedBundlePage_h 28 29#include <WebKit2/WKBundlePage.h> 30#include <WebKit2/WKBundleScriptWorld.h> 31#include <WebKit2/WKRetainPtr.h> 32 33namespace WTR { 34 35class InjectedBundlePage { 36public: 37 InjectedBundlePage(WKBundlePageRef); 38 ~InjectedBundlePage(); 39 40 WKBundlePageRef page() const { return m_page; } 41 void dump(); 42 43 void stopLoading(); 44 45 void reset(); 46 47 void dumpBackForwardList(); 48 49private: 50 // Loader Client 51 static void didStartProvisionalLoadForFrame(WKBundlePageRef, WKBundleFrameRef, WKTypeRef*, const void*); 52 static void didReceiveServerRedirectForProvisionalLoadForFrame(WKBundlePageRef, WKBundleFrameRef, WKTypeRef*, const void*); 53 static void didFailProvisionalLoadWithErrorForFrame(WKBundlePageRef, WKBundleFrameRef, WKErrorRef, WKTypeRef*, const void*); 54 static void didCommitLoadForFrame(WKBundlePageRef, WKBundleFrameRef, WKTypeRef*, const void*); 55 static void didFinishLoadForFrame(WKBundlePageRef, WKBundleFrameRef, WKTypeRef*, const void*); 56 static void didFinishDocumentLoadForFrame(WKBundlePageRef, WKBundleFrameRef, WKTypeRef*, const void*); 57 static void didFailLoadWithErrorForFrame(WKBundlePageRef, WKBundleFrameRef, WKErrorRef, WKTypeRef*, const void*); 58 static void didReceiveTitleForFrame(WKBundlePageRef, WKStringRef title, WKBundleFrameRef, WKTypeRef*, const void*); 59 static void didClearWindowForFrame(WKBundlePageRef, WKBundleFrameRef, WKBundleScriptWorldRef, const void*); 60 static void didCancelClientRedirectForFrame(WKBundlePageRef, WKBundleFrameRef, const void*); 61 static void willPerformClientRedirectForFrame(WKBundlePageRef, WKBundleFrameRef, WKURLRef url, double delay, double date, const void*); 62 static void didSameDocumentNavigationForFrame(WKBundlePageRef, WKBundleFrameRef, WKSameDocumentNavigationType, WKTypeRef*, const void*); 63 static void didHandleOnloadEventsForFrame(WKBundlePageRef, WKBundleFrameRef, const void*); 64 static void didDisplayInsecureContentForFrame(WKBundlePageRef, WKBundleFrameRef, WKTypeRef*, const void*); 65 static void didRunInsecureContentForFrame(WKBundlePageRef, WKBundleFrameRef, WKTypeRef*, const void*); 66 static void didInitiateLoadForResource(WKBundlePageRef, WKBundleFrameRef, uint64_t identifier, WKURLRequestRef, bool pageLoadIsProvisional, const void*); 67 static WKURLRequestRef willSendRequestForFrame(WKBundlePageRef, WKBundleFrameRef, uint64_t identifier, WKURLRequestRef, WKURLResponseRef, const void*); 68 static void didReceiveResponseForResource(WKBundlePageRef, WKBundleFrameRef, uint64_t identifier, WKURLResponseRef, const void*); 69 static void didReceiveContentLengthForResource(WKBundlePageRef, WKBundleFrameRef, uint64_t identifier, uint64_t length, const void*); 70 static void didFinishLoadForResource(WKBundlePageRef, WKBundleFrameRef, uint64_t identifier, const void*); 71 static void didFailLoadForResource(WKBundlePageRef, WKBundleFrameRef, uint64_t identifier, WKErrorRef, const void*); 72 73 void didStartProvisionalLoadForFrame(WKBundleFrameRef); 74 void didReceiveServerRedirectForProvisionalLoadForFrame(WKBundleFrameRef); 75 void didFailProvisionalLoadWithErrorForFrame(WKBundleFrameRef, WKErrorRef); 76 void didCommitLoadForFrame(WKBundleFrameRef); 77 void didFinishLoadForFrame(WKBundleFrameRef); 78 void didFailLoadWithErrorForFrame(WKBundleFrameRef, WKErrorRef); 79 void didReceiveTitleForFrame(WKStringRef title, WKBundleFrameRef); 80 void didClearWindowForFrame(WKBundleFrameRef, WKBundleScriptWorldRef); 81 void didCancelClientRedirectForFrame(WKBundleFrameRef); 82 void willPerformClientRedirectForFrame(WKBundleFrameRef, WKURLRef url, double delay, double date); 83 void didSameDocumentNavigationForFrame(WKBundleFrameRef, WKSameDocumentNavigationType); 84 void didFinishDocumentLoadForFrame(WKBundleFrameRef); 85 void didHandleOnloadEventsForFrame(WKBundleFrameRef); 86 void didDisplayInsecureContentForFrame(WKBundleFrameRef); 87 void didRunInsecureContentForFrame(WKBundleFrameRef); 88 89 // Resource Load Client 90 void didInitiateLoadForResource(WKBundlePageRef, WKBundleFrameRef, uint64_t identifier, WKURLRequestRef, bool pageLoadIsProvisional); 91 WKURLRequestRef willSendRequestForFrame(WKBundlePageRef, WKBundleFrameRef, uint64_t identifier, WKURLRequestRef, WKURLResponseRef); 92 void didReceiveResponseForResource(WKBundlePageRef, WKBundleFrameRef, uint64_t identifier, WKURLResponseRef); 93 void didReceiveContentLengthForResource(WKBundlePageRef, WKBundleFrameRef, uint64_t identifier, uint64_t length); 94 void didFinishLoadForResource(WKBundlePageRef, WKBundleFrameRef, uint64_t identifier); 95 void didFailLoadForResource(WKBundlePageRef, WKBundleFrameRef, uint64_t identifier, WKErrorRef); 96 97 // UI Client 98 static void willAddMessageToConsole(WKBundlePageRef, WKStringRef message, uint32_t lineNumber, const void* clientInfo); 99 static void willSetStatusbarText(WKBundlePageRef, WKStringRef statusbarText, const void* clientInfo); 100 static void willRunJavaScriptAlert(WKBundlePageRef, WKStringRef message, WKBundleFrameRef frame, const void* clientInfo); 101 static void willRunJavaScriptConfirm(WKBundlePageRef, WKStringRef message, WKBundleFrameRef frame, const void* clientInfo); 102 static void willRunJavaScriptPrompt(WKBundlePageRef, WKStringRef message, WKStringRef defaultValue, WKBundleFrameRef frame, const void* clientInfo); 103 void willAddMessageToConsole(WKStringRef message, uint32_t lineNumber); 104 void willSetStatusbarText(WKStringRef statusbarText); 105 void willRunJavaScriptAlert(WKStringRef message, WKBundleFrameRef); 106 void willRunJavaScriptConfirm(WKStringRef message, WKBundleFrameRef); 107 void willRunJavaScriptPrompt(WKStringRef message, WKStringRef defaultValue, WKBundleFrameRef); 108 109 // Editor client 110 static bool shouldBeginEditing(WKBundlePageRef, WKBundleRangeHandleRef, const void* clientInfo); 111 static bool shouldEndEditing(WKBundlePageRef, WKBundleRangeHandleRef, const void* clientInfo); 112 static bool shouldInsertNode(WKBundlePageRef, WKBundleNodeHandleRef, WKBundleRangeHandleRef rangeToReplace, WKInsertActionType, const void* clientInfo); 113 static bool shouldInsertText(WKBundlePageRef, WKStringRef, WKBundleRangeHandleRef rangeToReplace, WKInsertActionType, const void* clientInfo); 114 static bool shouldDeleteRange(WKBundlePageRef, WKBundleRangeHandleRef, const void* clientInfo); 115 static bool shouldChangeSelectedRange(WKBundlePageRef, WKBundleRangeHandleRef fromRange, WKBundleRangeHandleRef toRange, WKAffinityType, bool stillSelecting, const void* clientInfo); 116 static bool shouldApplyStyle(WKBundlePageRef, WKBundleCSSStyleDeclarationRef style, WKBundleRangeHandleRef range, const void* clientInfo); 117 static void didBeginEditing(WKBundlePageRef, WKStringRef notificationName, const void* clientInfo); 118 static void didEndEditing(WKBundlePageRef, WKStringRef notificationName, const void* clientInfo); 119 static void didChange(WKBundlePageRef, WKStringRef notificationName, const void* clientInfo); 120 static void didChangeSelection(WKBundlePageRef, WKStringRef notificationName, const void* clientInfo); 121 bool shouldBeginEditing(WKBundleRangeHandleRef); 122 bool shouldEndEditing(WKBundleRangeHandleRef); 123 bool shouldInsertNode(WKBundleNodeHandleRef, WKBundleRangeHandleRef rangeToReplace, WKInsertActionType); 124 bool shouldInsertText(WKStringRef, WKBundleRangeHandleRef rangeToReplace, WKInsertActionType); 125 bool shouldDeleteRange(WKBundleRangeHandleRef); 126 bool shouldChangeSelectedRange(WKBundleRangeHandleRef fromRange, WKBundleRangeHandleRef toRange, WKAffinityType, bool stillSelecting); 127 bool shouldApplyStyle(WKBundleCSSStyleDeclarationRef style, WKBundleRangeHandleRef range); 128 void didBeginEditing(WKStringRef notificationName); 129 void didEndEditing(WKStringRef notificationName); 130 void didChange(WKStringRef notificationName); 131 void didChangeSelection(WKStringRef notificationName); 132 133 void dumpAllFramesText(); 134 void dumpAllFrameScrollPositions(); 135 136 WKBundlePageRef m_page; 137 WKRetainPtr<WKBundleScriptWorldRef> m_world; 138 WKRetainPtr<WKBundleBackForwardListItemRef> m_previousTestBackForwardListItem; 139}; 140 141} // namespace WTR 142 143#endif // InjectedBundlePage_h 144