2 * Copyright (C) 2010 Apple Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
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.
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.
26 #ifndef InjectedBundlePage_h
27 #define InjectedBundlePage_h
29 #include <WebKit2/WKBundlePage.h>
30 #include <WebKit2/WKBundleScriptWorld.h>
31 #include <WebKit2/WKRetainPtr.h>
35 class InjectedBundlePage {
37 InjectedBundlePage(WKBundlePageRef);
38 ~InjectedBundlePage();
40 WKBundlePageRef page() const { return m_page; }
47 void dumpBackForwardList();
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 WKURLRequestRef willSendRequestForFrame(WKBundlePageRef, WKBundleFrameRef, uint64_t identifier, WKURLRequestRef, WKURLResponseRef, const void*);
67 void didStartProvisionalLoadForFrame(WKBundleFrameRef);
68 void didReceiveServerRedirectForProvisionalLoadForFrame(WKBundleFrameRef);
69 void didFailProvisionalLoadWithErrorForFrame(WKBundleFrameRef, WKErrorRef);
70 void didCommitLoadForFrame(WKBundleFrameRef);
71 void didFinishLoadForFrame(WKBundleFrameRef);
72 void didFailLoadWithErrorForFrame(WKBundleFrameRef, WKErrorRef);
73 void didReceiveTitleForFrame(WKStringRef title, WKBundleFrameRef);
74 void didClearWindowForFrame(WKBundleFrameRef, WKBundleScriptWorldRef);
75 void didCancelClientRedirectForFrame(WKBundleFrameRef);
76 void willPerformClientRedirectForFrame(WKBundleFrameRef, WKURLRef url, double delay, double date);
77 void didSameDocumentNavigationForFrame(WKBundleFrameRef, WKSameDocumentNavigationType);
78 void didFinishDocumentLoadForFrame(WKBundleFrameRef);
79 void didHandleOnloadEventsForFrame(WKBundleFrameRef);
80 void didDisplayInsecureContentForFrame(WKBundleFrameRef);
81 void didRunInsecureContentForFrame(WKBundleFrameRef);
82 WKURLRequestRef willSendRequestForFrame(WKBundlePageRef, WKBundleFrameRef, uint64_t identifier, WKURLRequestRef, WKURLResponseRef);
85 static void willAddMessageToConsole(WKBundlePageRef, WKStringRef message, uint32_t lineNumber, const void* clientInfo);
86 static void willSetStatusbarText(WKBundlePageRef, WKStringRef statusbarText, const void* clientInfo);
87 static void willRunJavaScriptAlert(WKBundlePageRef, WKStringRef message, WKBundleFrameRef frame, const void* clientInfo);
88 static void willRunJavaScriptConfirm(WKBundlePageRef, WKStringRef message, WKBundleFrameRef frame, const void* clientInfo);
89 static void willRunJavaScriptPrompt(WKBundlePageRef, WKStringRef message, WKStringRef defaultValue, WKBundleFrameRef frame, const void* clientInfo);
90 void willAddMessageToConsole(WKStringRef message, uint32_t lineNumber);
91 void willSetStatusbarText(WKStringRef statusbarText);
92 void willRunJavaScriptAlert(WKStringRef message, WKBundleFrameRef);
93 void willRunJavaScriptConfirm(WKStringRef message, WKBundleFrameRef);
94 void willRunJavaScriptPrompt(WKStringRef message, WKStringRef defaultValue, WKBundleFrameRef);
97 static bool shouldBeginEditing(WKBundlePageRef, WKBundleRangeHandleRef, const void* clientInfo);
98 static bool shouldEndEditing(WKBundlePageRef, WKBundleRangeHandleRef, const void* clientInfo);
99 static bool shouldInsertNode(WKBundlePageRef, WKBundleNodeHandleRef, WKBundleRangeHandleRef rangeToReplace, WKInsertActionType, const void* clientInfo);
100 static bool shouldInsertText(WKBundlePageRef, WKStringRef, WKBundleRangeHandleRef rangeToReplace, WKInsertActionType, const void* clientInfo);
101 static bool shouldDeleteRange(WKBundlePageRef, WKBundleRangeHandleRef, const void* clientInfo);
102 static bool shouldChangeSelectedRange(WKBundlePageRef, WKBundleRangeHandleRef fromRange, WKBundleRangeHandleRef toRange, WKAffinityType, bool stillSelecting, const void* clientInfo);
103 static bool shouldApplyStyle(WKBundlePageRef, WKBundleCSSStyleDeclarationRef style, WKBundleRangeHandleRef range, const void* clientInfo);
104 static void didBeginEditing(WKBundlePageRef, WKStringRef notificationName, const void* clientInfo);
105 static void didEndEditing(WKBundlePageRef, WKStringRef notificationName, const void* clientInfo);
106 static void didChange(WKBundlePageRef, WKStringRef notificationName, const void* clientInfo);
107 static void didChangeSelection(WKBundlePageRef, WKStringRef notificationName, const void* clientInfo);
108 bool shouldBeginEditing(WKBundleRangeHandleRef);
109 bool shouldEndEditing(WKBundleRangeHandleRef);
110 bool shouldInsertNode(WKBundleNodeHandleRef, WKBundleRangeHandleRef rangeToReplace, WKInsertActionType);
111 bool shouldInsertText(WKStringRef, WKBundleRangeHandleRef rangeToReplace, WKInsertActionType);
112 bool shouldDeleteRange(WKBundleRangeHandleRef);
113 bool shouldChangeSelectedRange(WKBundleRangeHandleRef fromRange, WKBundleRangeHandleRef toRange, WKAffinityType, bool stillSelecting);
114 bool shouldApplyStyle(WKBundleCSSStyleDeclarationRef style, WKBundleRangeHandleRef range);
115 void didBeginEditing(WKStringRef notificationName);
116 void didEndEditing(WKStringRef notificationName);
117 void didChange(WKStringRef notificationName);
118 void didChangeSelection(WKStringRef notificationName);
120 void dumpAllFramesText();
121 void dumpAllFrameScrollPositions();
123 WKBundlePageRef m_page;
124 WKRetainPtr<WKBundleScriptWorldRef> m_world;
125 WKRetainPtr<WKBundleBackForwardListItemRef> m_previousTestBackForwardListItem;
130 #endif // InjectedBundlePage_h