gpointer Shell::launchWPE(gpointer data) { Shell::m_instance = static_cast<Shell*>(data); GMainContext* threadContext = g_main_context_new(); GMainLoop* threadLoop = g_main_loop_new(threadContext, FALSE); g_main_context_push_thread_default(threadContext); auto pageGroupIdentifier = adoptWK(WKStringCreateWithUTF8CString("WPEPageGroup")); auto pageGroup = adoptWK(WKPageGroupCreateWithIdentifier(pageGroupIdentifier.get())); auto context = adoptWK(WKContextCreate()); Shell::instance().m_view = adoptWK(WKViewCreate(context.get(), pageGroup.get())); auto view = Shell::instance().m_view.get(); WKViewResize(view, Shell::instance().m_environment.outputSize()); WKViewMakeWPEInputTarget(view); const char* url = g_getenv("WPE_SHELL_URL"); if (!url) url = "http://www.webkit.org/blog-files/3d-transforms/poster-circle.html"; auto shellURL = adoptWK(WKURLCreateWithUTF8CString(url)); WKPageLoadURL(WKViewGetPage(view), shellURL.get()); g_main_loop_run(threadLoop); return nullptr; }
void EventSendingController::mouseDown(int button, JSValueRef modifierArray) { WKBundlePageRef page = InjectedBundle::shared().page()->page(); WKBundleFrameRef frame = WKBundlePageGetMainFrame(page); JSContextRef context = WKBundleFrameGetJavaScriptContext(frame); WKEventModifiers modifiers = parseModifierArray(context, modifierArray); #ifdef USE_WEBPROCESS_EVENT_SIMULATION updateClickCount(button); WKBundlePageSimulateMouseDown(page, button, m_position, m_clickCount, modifiers, m_time); #else WKRetainPtr<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender")); WKRetainPtr<WKMutableDictionaryRef> EventSenderMessageBody(AdoptWK, WKMutableDictionaryCreate()); WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage")); WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("MouseDown")); WKDictionaryAddItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get()); WKRetainPtr<WKStringRef> buttonKey = adoptWK(WKStringCreateWithUTF8CString("Button")); WKRetainPtr<WKUInt64Ref> buttonRef = adoptWK(WKUInt64Create(button)); WKDictionaryAddItem(EventSenderMessageBody.get(), buttonKey.get(), buttonRef.get()); WKRetainPtr<WKStringRef> modifiersKey = adoptWK(WKStringCreateWithUTF8CString("Modifiers")); WKRetainPtr<WKUInt64Ref> modifiersRef = adoptWK(WKUInt64Create(modifiers)); WKDictionaryAddItem(EventSenderMessageBody.get(), modifiersKey.get(), modifiersRef.get()); WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0); #endif }
void InjectedBundle::done() { m_state = Stopping; page()->stopLoading(); setTopLoadingFrame(0); m_accessibilityController->resetToConsistentState(); WKRetainPtr<WKStringRef> doneMessageName(AdoptWK, WKStringCreateWithUTF8CString("Done")); WKRetainPtr<WKMutableDictionaryRef> doneMessageBody(AdoptWK, WKMutableDictionaryCreate()); WKRetainPtr<WKStringRef> textOutputKey(AdoptWK, WKStringCreateWithUTF8CString("TextOutput")); WKRetainPtr<WKStringRef> textOutput(AdoptWK, WKStringCreateWithUTF8CString(m_stringBuilder->toString().utf8().data())); WKDictionaryAddItem(doneMessageBody.get(), textOutputKey.get(), textOutput.get()); WKRetainPtr<WKStringRef> pixelResultKey = adoptWK(WKStringCreateWithUTF8CString("PixelResult")); WKDictionaryAddItem(doneMessageBody.get(), pixelResultKey.get(), m_pixelResult.get()); WKRetainPtr<WKStringRef> repaintRectsKey = adoptWK(WKStringCreateWithUTF8CString("RepaintRects")); WKDictionaryAddItem(doneMessageBody.get(), repaintRectsKey.get(), m_repaintRects.get()); WKBundlePostMessage(m_bundle, doneMessageName.get(), doneMessageBody.get()); closeOtherPages(); page()->resetAfterTest(); m_state = Idle; }
WebPageProxy* WebInspectorProxy::platformCreateInspectorPage() { ASSERT(m_inspectedPage); #ifdef HAVE_ECORE_X const char* engine = "opengl_x11"; m_inspectorWindow = ecore_evas_new(engine, 0, 0, initialWindowWidth, initialWindowHeight, 0); // Gracefully fall back to software if evas_gl engine is not available. if (!m_inspectorWindow) #endif m_inspectorWindow = ecore_evas_new(0, 0, 0, initialWindowWidth, initialWindowHeight, 0); if (!m_inspectorWindow) return 0; WKContextRef wkContext = toAPI(&inspectorProcessPool()); WKRetainPtr<WKStringRef> wkGroupIdentifier = adoptWK(WKStringCreateWithUTF8CString(inspectorPageGroupIdentifier().utf8().data())); WKPageGroupRef wkPageGroup = WKPageGroupCreateWithIdentifier(wkGroupIdentifier.get()); WKRetainPtr<WKPageConfigurationRef> wkPageConfiguration = adoptWK(WKPageConfigurationCreate()); WKPageConfigurationSetContext(wkPageConfiguration.get(), wkContext); WKPageConfigurationSetPageGroup(wkPageConfiguration.get(), wkPageGroup); m_inspectorView = EWKViewCreate(wkContext, wkPageConfiguration.get(), ecore_evas_get(m_inspectorWindow), /* smart */ 0); WKViewRef wkView = EWKViewGetWKView(m_inspectorView); WKRetainPtr<WKStringRef> wkTheme = adoptWK(WKStringCreateWithUTF8CString(DEFAULT_THEME_DIR "/default.edj")); WKViewSetThemePath(wkView, wkTheme.get()); WKPreferencesRef wkPreferences = WKPageGroupGetPreferences(wkPageGroup); WKPreferencesSetFileAccessFromFileURLsAllowed(wkPreferences, true); WKPreferencesSetJavaScriptRuntimeFlags(wkPreferences, 0); return toImpl(WKViewGetPage(wkView)); }
static void createSessionStates(WKContextRef context) { PlatformWebView webView(context); setPageLoaderClient(webView.page()); WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple", "html")).get()); Util::run(&didFinishLoad); didFinishLoad = false; WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple2", "html")).get()); Util::run(&didFinishLoad); didFinishLoad = false; WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple3", "html")).get()); Util::run(&didFinishLoad); didFinishLoad = false; WKPageGoBack(webView.page()); Util::run(&didFinishLoad); didFinishLoad = false; WKPageGoBack(webView.page()); Util::run(&didFinishLoad); didFinishLoad = false; // Should be back on simple.html at this point. sessionStateWithFirstItemRemoved = adoptWK(static_cast<WKSessionStateRef>(WKPageCopySessionState(webView.page(), reinterpret_cast<void*>(1), filterFirstItemCallback))); sessionStateWithAllItemsRemoved = adoptWK(static_cast<WKSessionStateRef>(WKPageCopySessionState(webView.page(), reinterpret_cast<void*>(1), filterAllItemsCallback))); }
View::View(GLContext& glContext) : m_glContext(glContext) { m_context = WKContextCreate(); m_pageConfiguration = WKPageConfigurationCreate(); { auto pageGroupIdentifier = adoptWK(WKStringCreateWithUTF8CString("WPEPageGroup")); auto pageGroup = adoptWK(WKPageGroupCreateWithIdentifier(pageGroupIdentifier.get())); WKPageConfigurationSetContext(m_pageConfiguration, m_context); WKPageConfigurationSetPageGroup(m_pageConfiguration, pageGroup.get()); } m_exportable = wpe_mesa_view_backend_exportable_create(&s_exportableClient, this); auto* backend = wpe_mesa_view_backend_exportable_get_view_backend(m_exportable); m_view = WKViewCreateWithViewBackend(backend, m_pageConfiguration); WKPageSetPageNavigationClient(WKViewGetPage(m_view), &s_pageNavigationClient.base); m_updateSource = g_timeout_source_new(m_frameRate / 1000); g_source_set_callback(m_updateSource, [](gpointer data) -> gboolean { auto& view = *static_cast<View*>(data); view.performUpdate(); return TRUE; }, this, nullptr); g_source_attach(m_updateSource, g_main_context_default()); }
void TestInvocation::invoke() { sizeWebViewForCurrentTest(m_pathOrURL.c_str()); WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("BeginTest")); WKRetainPtr<WKBooleanRef> dumpPixels = adoptWK(WKBooleanCreate(m_dumpPixels)); WKContextPostMessageToInjectedBundle(TestController::shared().context(), messageName.get(), dumpPixels.get()); TestController::shared().runUntil(m_gotInitialResponse, TestController::ShortTimeout); if (!m_gotInitialResponse) { dump("Timed out waiting for initial response from web process\n"); return; } if (m_error) { dump("FAIL\n"); return; } if (shouldOpenWebInspector(m_pathOrURL.c_str())) WKInspectorShow(WKPageGetInspector(TestController::shared().mainWebView()->page())); WKPageLoadURL(TestController::shared().mainWebView()->page(), m_url.get()); TestController::shared().runUntil(m_gotFinalMessage, TestController::LongTimeout); if (!m_gotFinalMessage) dump("Timed out waiting for final message from web process\n"); else if (m_error) dump("FAIL\n"); WKInspectorClose(WKPageGetInspector(TestController::shared().mainWebView()->page())); }
void InjectedBundle::done() { m_state = Stopping; m_useWorkQueue = false; page()->stopLoading(); setTopLoadingFrame(0); m_accessibilityController->resetToConsistentState(); WKRetainPtr<WKStringRef> doneMessageName(AdoptWK, WKStringCreateWithUTF8CString("Done")); WKRetainPtr<WKMutableDictionaryRef> doneMessageBody(AdoptWK, WKMutableDictionaryCreate()); WKRetainPtr<WKStringRef> pixelResultKey = adoptWK(WKStringCreateWithUTF8CString("PixelResult")); WKDictionarySetItem(doneMessageBody.get(), pixelResultKey.get(), m_pixelResult.get()); WKRetainPtr<WKStringRef> repaintRectsKey = adoptWK(WKStringCreateWithUTF8CString("RepaintRects")); WKDictionarySetItem(doneMessageBody.get(), repaintRectsKey.get(), m_repaintRects.get()); WKRetainPtr<WKStringRef> audioResultKey = adoptWK(WKStringCreateWithUTF8CString("AudioResult")); WKDictionarySetItem(doneMessageBody.get(), audioResultKey.get(), m_audioResult.get()); WKBundlePostMessage(m_bundle, doneMessageName.get(), doneMessageBody.get()); closeOtherPages(); m_state = Idle; }
void TestController::didReceiveMessageFromInjectedBundle(WKStringRef messageName, WKTypeRef messageBody) { #if PLATFORM(MAC) || PLATFORM(QT) || PLATFORM(GTK) || PLATFORM(EFL) if (WKStringIsEqualToUTF8CString(messageName, "EventSender")) { ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID()); WKDictionaryRef messageBodyDictionary = static_cast<WKDictionaryRef>(messageBody); WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage")); WKStringRef subMessageName = static_cast<WKStringRef>(WKDictionaryGetItemForKey(messageBodyDictionary, subMessageKey.get())); if (WKStringIsEqualToUTF8CString(subMessageName, "MouseDown") || WKStringIsEqualToUTF8CString(subMessageName, "MouseUp")) { WKRetainPtr<WKStringRef> buttonKey = adoptWK(WKStringCreateWithUTF8CString("Button")); unsigned button = static_cast<unsigned>(WKUInt64GetValue(static_cast<WKUInt64Ref>(WKDictionaryGetItemForKey(messageBodyDictionary, buttonKey.get())))); WKRetainPtr<WKStringRef> modifiersKey = adoptWK(WKStringCreateWithUTF8CString("Modifiers")); WKEventModifiers modifiers = static_cast<WKEventModifiers>(WKUInt64GetValue(static_cast<WKUInt64Ref>(WKDictionaryGetItemForKey(messageBodyDictionary, modifiersKey.get())))); // Forward to WebProcess WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), false); if (WKStringIsEqualToUTF8CString(subMessageName, "MouseDown")) m_eventSenderProxy->mouseDown(button, modifiers); else m_eventSenderProxy->mouseUp(button, modifiers); return; } ASSERT_NOT_REACHED(); } #endif if (!m_currentInvocation) return; m_currentInvocation->didReceiveMessageFromInjectedBundle(messageName, messageBody); }
TEST(WebKit2, WillSendSubmitEvent) { WKRetainPtr<WKContextRef> context = adoptWK(Util::createContextForInjectedBundleTest("WillSendSubmitEventTest")); setInjectedBundleClient(context.get()); PlatformWebView webView(context.get()); WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("auto-submitting-form", "html")).get()); Util::run(&didReceiveMessage); }
static void updateLayoutType(const char* pathOrURL) { WKRetainPtr<WKMutableDictionaryRef> viewOptions = adoptWK(WKMutableDictionaryCreate()); WKRetainPtr<WKStringRef> useFixedLayoutKey = adoptWK(WKStringCreateWithUTF8CString("UseFixedLayout")); WKRetainPtr<WKBooleanRef> useFixedLayoutValue = adoptWK(WKBooleanCreate(shouldUseFixedLayout(pathOrURL))); WKDictionaryAddItem(viewOptions.get(), useFixedLayoutKey.get(), useFixedLayoutValue.get()); TestController::shared().ensureViewSupportsOptions(viewOptions.get()); }
static void didAssociateFormControls(WKBundlePageRef page, WKArrayRef elementHandles, const void*) { WKRetainPtr<WKMutableDictionaryRef> messageBody = adoptWK(WKMutableDictionaryCreate()); WKDictionarySetItem(messageBody.get(), Util::toWK("Page").get(), page); WKRetainPtr<WKUInt64Ref> numberOfElements = adoptWK(WKUInt64Create(WKArrayGetSize(elementHandles))); WKDictionarySetItem(messageBody.get(), Util::toWK("NumberOfControls").get(), numberOfElements.get()); WKBundlePostMessage(InjectedBundleController::singleton().bundle(), Util::toWK("DidReceiveDidAssociateFormControls").get(), messageBody.get()); }
static WKRetainPtr<WKDataRef> createSessionState(WKContextRef context) { PlatformWebView webView(context); setPageLoaderClient(webView.page()); WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple", "html")).get()); Util::run(&didFinishLoad); didFinishLoad = false; return adoptWK(WKPageCopySessionState(webView.page(), 0, 0)); }
TEST_F(WebKit2UserMessageRoundTripTest, WKURLRequestRef) { WKRetainPtr<WKURLRef> url = adoptWK(WKURLCreateWithUTF8CString("http://webkit.org/")); WKRetainPtr<WKURLRequestRef> request = adoptWK(WKURLRequestCreateWithWKURL(url.get())); roundTrip(request.get()); WKTypeRef roundTrippedTypeRef = recievedBody.get(); WKRetainPtr<WKURLRequestRef> roundTrippedRequest = static_cast<WKURLRequestRef>(roundTrippedTypeRef); WKRetainPtr<WKURLRef> roundTrippedURL = adoptWK(WKURLRequestCopyURL(roundTrippedRequest.get())); EXPECT_TRUE(WKURLIsEqual(roundTrippedURL.get(), url.get())); }
bool TestController::resetStateToConsistentValues() { m_state = Resetting; WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("Reset")); WKRetainPtr<WKMutableDictionaryRef> resetMessageBody = adoptWK(WKMutableDictionaryCreate()); WKRetainPtr<WKStringRef> shouldGCKey = adoptWK(WKStringCreateWithUTF8CString("ShouldGC")); WKRetainPtr<WKBooleanRef> shouldGCValue = adoptWK(WKBooleanCreate(m_gcBetweenTests)); WKDictionaryAddItem(resetMessageBody.get(), shouldGCKey.get(), shouldGCValue.get()); WKContextPostMessageToInjectedBundle(TestController::shared().context(), messageName.get(), resetMessageBody.get()); // FIXME: This function should also ensure that there is only one page open. // Reset preferences WKPreferencesRef preferences = WKPageGroupGetPreferences(m_pageGroup.get()); WKPreferencesSetOfflineWebApplicationCacheEnabled(preferences, true); WKPreferencesSetFontSmoothingLevel(preferences, kWKFontSmoothingLevelNoSubpixelAntiAliasing); WKPreferencesSetXSSAuditorEnabled(preferences, false); WKPreferencesSetDeveloperExtrasEnabled(preferences, true); WKPreferencesSetJavaScriptCanOpenWindowsAutomatically(preferences, true); WKPreferencesSetJavaScriptCanAccessClipboard(preferences, true); WKPreferencesSetDOMPasteAllowed(preferences, true); WKPreferencesSetUniversalAccessFromFileURLsAllowed(preferences, true); WKPreferencesSetFileAccessFromFileURLsAllowed(preferences, true); #if ENABLE(FULLSCREEN_API) WKPreferencesSetFullScreenEnabled(preferences, true); #endif static WKStringRef standardFontFamily = WKStringCreateWithUTF8CString("Times"); static WKStringRef cursiveFontFamily = WKStringCreateWithUTF8CString("Apple Chancery"); static WKStringRef fantasyFontFamily = WKStringCreateWithUTF8CString("Papyrus"); static WKStringRef fixedFontFamily = WKStringCreateWithUTF8CString("Courier"); static WKStringRef sansSerifFontFamily = WKStringCreateWithUTF8CString("Helvetica"); static WKStringRef serifFontFamily = WKStringCreateWithUTF8CString("Times"); WKPreferencesSetStandardFontFamily(preferences, standardFontFamily); WKPreferencesSetCursiveFontFamily(preferences, cursiveFontFamily); WKPreferencesSetFantasyFontFamily(preferences, fantasyFontFamily); WKPreferencesSetFixedFontFamily(preferences, fixedFontFamily); WKPreferencesSetSansSerifFontFamily(preferences, sansSerifFontFamily); WKPreferencesSetSerifFontFamily(preferences, serifFontFamily); m_mainWebView->focus(); // Reset main page back to about:blank m_doneResetting = false; WKPageLoadURL(m_mainWebView->page(), blankURL()); runUntil(m_doneResetting, ShortTimeout); return m_doneResetting; }
static void updateTiledDrawingForCurrentTest(const char* pathOrURL) { #if PLATFORM(MAC) WKRetainPtr<WKMutableDictionaryRef> viewOptions = adoptWK(WKMutableDictionaryCreate()); WKRetainPtr<WKStringRef> useTiledDrawingKey = adoptWK(WKStringCreateWithUTF8CString("TiledDrawing")); WKRetainPtr<WKBooleanRef> useTiledDrawingValue = adoptWK(WKBooleanCreate(shouldUseTiledDrawing(pathOrURL))); WKDictionaryAddItem(viewOptions.get(), useTiledDrawingKey.get(), useTiledDrawingValue.get()); TestController::shared().ensureViewSupportsOptions(viewOptions.get()); #else UNUSED_PARAM(pathOrURL); #endif }
static bool filterFirstItemCallback(WKPageRef page, WKStringRef valueType, WKTypeRef value, void* context) { if (!WKStringIsEqual(valueType, WKPageGetSessionBackForwardListItemValueType())) return true; ASSERT(WKGetTypeID(value) == WKBackForwardListItemGetTypeID()); WKBackForwardListItemRef backForwardListItem = static_cast<WKBackForwardListItemRef>(value); WKRetainPtr<WKURLRef> url = adoptWK(WKBackForwardListItemCopyURL(backForwardListItem)); WKRetainPtr<WKStringRef> path = adoptWK(WKURLCopyLastPathComponent(url.get())); return !WKStringIsEqualToUTF8CString(path.get(), "simple.html"); }
TEST(WebKit2, AboutBlankLoad) { WKRetainPtr<WKContextRef> context = adoptWK(WKContextCreate()); PlatformWebView webView(context.get()); WKPageLoaderClient loaderClient; memset(&loaderClient, 0 , sizeof(loaderClient)); loaderClient.didFinishLoadForFrame = didFinishLoadForFrame; WKPageSetPageLoaderClient(webView.page(), &loaderClient); WKPageLoadURL(webView.page(), adoptWK(WKURLCreateWithUTF8CString("about:blank")).get()); Util::run(&done); }
void DOMWindowExtensionBasic::sendExtensionStateMessage() { char body[16384]; sprintf(body, "Extension states:\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s", m_extensionRecords[0].name, stateNames[m_extensionRecords[0].state], m_extensionRecords[1].name, stateNames[m_extensionRecords[1].state], m_extensionRecords[2].name, stateNames[m_extensionRecords[2].state], m_extensionRecords[3].name, stateNames[m_extensionRecords[3].state], m_extensionRecords[4].name, stateNames[m_extensionRecords[4].state], m_extensionRecords[5].name, stateNames[m_extensionRecords[5].state]); WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("ExtensionStates")); WKRetainPtr<WKStringRef> messageBody = adoptWK(WKStringCreateWithUTF8CString(body)); WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get()); }
TEST(WebKit2, DownloadDecideDestinationCrash) { WKRetainPtr<WKContextRef> context = adoptWK(WKContextCreate()); setContextDownloadClient(context.get()); PlatformWebView webView(context.get()); setPagePolicyClient(webView.page()); // The length of this filename was specially chosen to trigger the crash conditions in // <http://webkit.org/b/61142>. Specifically, it causes ArgumentDecoder::m_bufferPos and m_bufferEnd // to be equal after the DecideDestinationWithSuggestedFilename message has been handled. WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("18-characters", "html")).get()); Util::run(&didDecideDestination); }
TEST(WebKit2, CanHandleRequest) { WKRetainPtr<WKContextRef> context = adoptWK(Util::createContextForInjectedBundleTest("CanHandleRequestTest")); setInjectedBundleClient(context.get()); _WKContextRegisterURLSchemeAsEmptyDocument(context.get(), Util::toWK("emptyscheme").get()); PlatformWebView webView(context.get()); WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple", "html")).get()); WKContextPostMessageToInjectedBundle(context.get(), Util::toWK("CheckCanHandleRequest").get(), 0); Util::run(&didReceiveMessage); EXPECT_TRUE(canHandleRequest); }
TEST(WebKit2, AboutBlankLoad) { WKRetainPtr<WKContextRef> context = adoptWK(WKContextCreate()); PlatformWebView webView(context.get()); WKPagePolicyClient policyClient; memset(&policyClient, 0, sizeof(policyClient)); policyClient.decidePolicyForResponse = decidePolicyForResponse; WKPageSetPagePolicyClient(webView.page(), &policyClient); WKPageLoadURL(webView.page(), adoptWK(WKURLCreateWithUTF8CString("about:blank")).get()); Util::run(&done); }
QWebPermissionRequestPrivate(WKSecurityOriginRef securityOrigin, WKGeolocationPermissionRequestRef geo = 0, WKNotificationPermissionRequestRef notify = 0, QWebPermissionRequest::RequestType reqType = QWebPermissionRequest::Geolocation) : origin(securityOrigin) , geolocationRequest(geo) , notificationRequest(notify) , type(reqType) , allow(false) { WKRetainPtr<WKStringRef> url = adoptWK(WKSecurityOriginCopyProtocol(origin.get())); securityInfo.setScheme(WKStringCopyQString(url.get())); WKRetainPtr<WKStringRef> host = adoptWK(WKSecurityOriginCopyHost(origin.get())); securityInfo.setHost(WKStringCopyQString(host.get())); securityInfo.setPort(static_cast<int>(WKSecurityOriginGetPort(origin.get()))); }
static WKRetainPtr<WKDataRef> createSessionStateContainingFormData(WKContextRef context) { PlatformWebView webView(context); setPageLoaderClient(webView.page()); WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple-form", "html")).get()); Util::run(&didFinishLoad); didFinishLoad = false; TEST_ASSERT_RETURN(runJSTest(webView.page(), "submitForm()", "undefined"), 0); Util::run(&didFinishLoad); didFinishLoad = false; return adoptWK(WKPageCopySessionState(webView.page(), 0, 0)); }
WebPageProxy* WebInspectorProxy::platformCreateInspectorPage() { ASSERT(m_page); #ifdef HAVE_ECORE_X const char* engine = "opengl_x11"; m_inspectorWindow = ecore_evas_new(engine, 0, 0, initialWindowWidth, initialWindowHeight, 0); // Gracefully fall back to software if evas_gl engine is not available. if (!m_inspectorWindow) #endif m_inspectorWindow = ecore_evas_new(0, 0, 0, initialWindowWidth, initialWindowHeight, 0); if (!m_inspectorWindow) return 0; WKContextRef wkContext = toAPI(page()->process()->context()); WKPageGroupRef wkPageGroup = toAPI(inspectorPageGroup()); m_inspectorView = EWKViewCreate(wkContext, wkPageGroup, ecore_evas_get(m_inspectorWindow), /* smart */ 0); WKViewRef wkView = EWKViewGetWKView(m_inspectorView); WKRetainPtr<WKStringRef> wkTheme = adoptWK(WKStringCreateWithUTF8CString(TEST_THEME_DIR "/default.edj")); WKViewSetThemePath(wkView, wkTheme.get()); WKPreferencesRef wkPreferences = WKPageGroupGetPreferences(wkPageGroup); WKPreferencesSetFileAccessFromFileURLsAllowed(wkPreferences, true); return toImpl(WKViewGetPage(wkView)); }
void WebViewClient::webProcessCrashed(WebView* view, const String& url) { if (!m_client.webProcessCrashed) return; m_client.webProcessCrashed(toAPI(view), adoptWK(toCopiedURLAPI(url)).get(), m_client.base.clientInfo); }
virtual void SetUp() { context = adoptWK(Util::createContextForInjectedBundleTest("UserMessageTest")); setInjectedBundleClient(context.get(), this); webView = std::make_unique<PlatformWebView>(context.get()); setPageLoaderClient(webView->page(), this); didFinishLoad = false; didReceiveMessage = false; // Force the creation of the WKPageLoadURL(webView->page(), adoptWK(Util::createURLForResource("simple", "html")).get()); Util::run(&didFinishLoad); }
TEST(WebKit2, ResizeReversePaginatedWebView) { WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate()); PlatformWebView webView(context.get()); WKPageLoaderClientV3 loaderClient; memset(&loaderClient, 0, sizeof(loaderClient)); loaderClient.base.version = 3; loaderClient.base.clientInfo = &webView; loaderClient.didLayout = didLayout; WKPageSetPageLoaderClient(webView.page(), &loaderClient.base); WKPageListenForLayoutMilestones(webView.page(), kWKDidFirstLayoutAfterSuppressedIncrementalRendering); WKPageGroupRef pageGroup = WKPageGetPageGroup(webView.page()); WKPreferencesRef preferences = WKPageGroupGetPreferences(pageGroup); WKPreferencesSetSuppressesIncrementalRendering(preferences, true); WKPageSetPaginationMode(webView.page(), kWKPaginationModeRightToLeft); WKPageSetPageLength(webView.page(), pageLength); WKPageSetGapBetweenPages(webView.page(), pageGap); WKPageSetPaginationBehavesLikeColumns(webView.page(), true); WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("lots-of-text-vertical-lr", "html")).get()); Util::run(&testDone); EXPECT_TRUE(testDone); }
void QWebPreferencesPrivate::setFontFamily(QWebPreferencesPrivate::FontFamily which, const QString& family) { WKPreferencesRef preferencesRef = WKPageGroupGetPreferences(webViewPrivate->pageGroup.get()); WKRetainPtr<WKStringRef> familyRef = adoptWK(WKStringCreateWithQString(family)); switch (which) { case StandardFont: WKPreferencesSetStandardFontFamily(preferencesRef, familyRef.get()); break; case FixedFont: WKPreferencesSetFixedFontFamily(preferencesRef, familyRef.get()); break; case SerifFont: WKPreferencesSetSerifFontFamily(preferencesRef, familyRef.get()); break; case SansSerifFont: WKPreferencesSetSansSerifFontFamily(preferencesRef, familyRef.get()); break; case CursiveFont: WKPreferencesSetCursiveFontFamily(preferencesRef, familyRef.get()); break; case FantasyFont: WKPreferencesSetFantasyFontFamily(preferencesRef, familyRef.get()); break; default: break; } }
void WebViewClient::didChangeTooltip(WebView* view, const String& tooltip) { if (!m_client.didChangeTooltip) return; m_client.didChangeTooltip(toAPI(view), adoptWK(toCopiedAPI(tooltip)).get(), m_client.base.clientInfo); }