void webWorkerTerminate(JSContextRef context, int isDedicated) { if(isDedicated) WKBundlePostMessage(InjectedBundleController::shared().bundle(), Util::toWK("WebWorkerTerminateMessage").get(), 0); else WKBundlePostMessage(InjectedBundleController::shared().bundle(), Util::toWK("WebWorkerSharedTerminateMessage").get(), 0); }
void InjectedBundle::didReceiveMessage(WKStringRef messageName, WKTypeRef messageBody) { if (WKStringIsEqualToUTF8CString(messageName, "BeginTest")) { ASSERT(messageBody); ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID()); WKDictionaryRef messageBodyDictionary = static_cast<WKDictionaryRef>(messageBody); WKRetainPtr<WKStringRef> dumpPixelsKey(AdoptWK, WKStringCreateWithUTF8CString("DumpPixels")); m_dumpPixels = WKBooleanGetValue(static_cast<WKBooleanRef>(WKDictionaryGetItemForKey(messageBodyDictionary, dumpPixelsKey.get()))); WKRetainPtr<WKStringRef> useWaitToDumpWatchdogTimerKey(AdoptWK, WKStringCreateWithUTF8CString("UseWaitToDumpWatchdogTimer")); m_useWaitToDumpWatchdogTimer = WKBooleanGetValue(static_cast<WKBooleanRef>(WKDictionaryGetItemForKey(messageBodyDictionary, useWaitToDumpWatchdogTimerKey.get()))); WKRetainPtr<WKStringRef> ackMessageName(AdoptWK, WKStringCreateWithUTF8CString("Ack")); WKRetainPtr<WKStringRef> ackMessageBody(AdoptWK, WKStringCreateWithUTF8CString("BeginTest")); WKBundlePostMessage(m_bundle, ackMessageName.get(), ackMessageBody.get()); beginTesting(messageBodyDictionary); return; } else if (WKStringIsEqualToUTF8CString(messageName, "Reset")) { ASSERT(messageBody); ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID()); WKDictionaryRef messageBodyDictionary = static_cast<WKDictionaryRef>(messageBody); WKRetainPtr<WKStringRef> shouldGCKey(AdoptWK, WKStringCreateWithUTF8CString("ShouldGC")); bool shouldGC = WKBooleanGetValue(static_cast<WKBooleanRef>(WKDictionaryGetItemForKey(messageBodyDictionary, shouldGCKey.get()))); if (shouldGC) WKBundleGarbageCollectJavaScriptObjects(m_bundle); m_state = Idle; m_dumpPixels = false; resetLocalSettings(); m_testRunner->removeAllWebNotificationPermissions(); return; } if (WKStringIsEqualToUTF8CString(messageName, "CallAddChromeInputFieldCallback")) { m_testRunner->callAddChromeInputFieldCallback(); return; } if (WKStringIsEqualToUTF8CString(messageName, "CallRemoveChromeInputFieldCallback")) { m_testRunner->callRemoveChromeInputFieldCallback(); return; } if (WKStringIsEqualToUTF8CString(messageName, "CallFocusWebViewCallback")) { m_testRunner->callFocusWebViewCallback(); return; } if (WKStringIsEqualToUTF8CString(messageName, "CallSetBackingScaleFactorCallback")) { m_testRunner->callSetBackingScaleFactorCallback(); return; } WKRetainPtr<WKStringRef> errorMessageName(AdoptWK, WKStringCreateWithUTF8CString("Error")); WKRetainPtr<WKStringRef> errorMessageBody(AdoptWK, WKStringCreateWithUTF8CString("Unknown")); WKBundlePostMessage(m_bundle, errorMessageName.get(), errorMessageBody.get()); }
void InjectedBundle::queueReload() { m_useWorkQueue = true; WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("QueueReload")); WKBundlePostMessage(m_bundle, messageName.get(), 0); }
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; }
virtual void didReceiveMessage(WKBundleRef bundle, WKStringRef messageName, WKTypeRef messageBody) { if (!WKStringIsEqualToUTF8CString(messageName, "RoundTrip")) return; WKBundlePostMessage(bundle, Util::toWK("RoundTripReturn").get(), messageBody); }
void QtBuiltinBundlePage::postMessageFromNavigatorQtObject(WKStringRef contents) { static WKStringRef messageName = WKStringCreateWithUTF8CString("MessageFromNavigatorQtObject"); WKTypeRef body[] = { page(), contents }; WKRetainPtr<WKArrayRef> messageBody(AdoptWK, WKArrayCreate(body, sizeof(body) / sizeof(WKTypeRef))); WKBundlePostMessage(m_bundle->toRef(), messageName, messageBody.get()); }
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; }
void InjectedBundle::queueNonLoadingScript(WKStringRef script) { m_useWorkQueue = true; WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("QueueNonLoadingScript")); WKBundlePostMessage(m_bundle, messageName.get(), script); }
static void getContextMenuFromDefaultMenu(WKBundlePageRef page, WKBundleHitTestResultRef hitTestResult, WKArrayRef defaultMenu, WKArrayRef* newMenu, WKTypeRef* userData, const void* clientInfo) { WKRetainPtr<WKBundleNodeHandleRef> nodeHandle(AdoptWK, WKBundleHitTestResultCopyNodeHandle(hitTestResult)); if (!nodeHandle) return; WKBundlePostMessage(InjectedBundleController::shared().bundle(), Util::toWK("HitTestResultNodeHandleTestDoneMessageName").get(), Util::toWK("HitTestResultNodeHandleTestDoneMessageBody").get()); }
void InjectedBundle::queueForwardNavigation(unsigned howFarForward) { m_useWorkQueue = true; WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("QueueForwardNavigation")); WKRetainPtr<WKUInt64Ref> messageBody(AdoptWK, WKUInt64Create(howFarForward)); WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get()); }
static void willLoadURLRequest(WKBundlePageRef page, WKURLRequestRef request, WKTypeRef userData, const void *clientInfo) { WKRetainPtr<WKMutableDictionaryRef> messageBody = adoptWK(WKMutableDictionaryCreate()); WKDictionarySetItem(messageBody.get(), Util::toWK("URLRequestReturn").get(), request); WKDictionarySetItem(messageBody.get(), Util::toWK("UserDataReturn").get(), userData); WKBundlePostMessage(InjectedBundleController::singleton().bundle(), Util::toWK("WillLoadURLRequestReturn").get(), messageBody.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()); }
void InjectedBundle::outputText(const String& output) { if (m_state != Testing) return; if (output.isEmpty()) return; WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("TextOutput")); WKRetainPtr<WKStringRef> messageBody(AdoptWK, WKStringCreateWithUTF8CString(output.utf8().data())); WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get()); }
static void didFinishLoadForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef* userData, const void *clientInfo) { if (!WKBundleFrameIsMainFrame(frame)) { childFrame = frame; return; } bool isParentFrameCheckSuccessful = childFrame ? WKBundleFrameGetParentFrame(childFrame.get()) == frame : false; WKBundlePostMessage(testBundle.get(), Util::toWK("DidCheckParentFrame").get(), adoptWK(WKBooleanCreate(isParentFrameCheckSuccessful)).get()); }
void InjectedBundle::setHidden(bool hidden) { WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetHidden")); WKRetainPtr<WKMutableDictionaryRef> messageBody(AdoptWK, WKMutableDictionaryCreate()); WKRetainPtr<WKStringRef> isInitialKeyWK(AdoptWK, WKStringCreateWithUTF8CString("hidden")); WKRetainPtr<WKBooleanRef> isInitialWK(AdoptWK, WKBooleanCreate(hidden)); WKDictionarySetItem(messageBody.get(), isInitialKeyWK.get(), isInitialWK.get()); WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get()); }
void InjectedBundle::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed) { WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetMockGeolocationPosition")); WKRetainPtr<WKMutableDictionaryRef> messageBody(AdoptWK, WKMutableDictionaryCreate()); WKRetainPtr<WKStringRef> latitudeKeyWK(AdoptWK, WKStringCreateWithUTF8CString("latitude")); WKRetainPtr<WKDoubleRef> latitudeWK(AdoptWK, WKDoubleCreate(latitude)); WKDictionarySetItem(messageBody.get(), latitudeKeyWK.get(), latitudeWK.get()); WKRetainPtr<WKStringRef> longitudeKeyWK(AdoptWK, WKStringCreateWithUTF8CString("longitude")); WKRetainPtr<WKDoubleRef> longitudeWK(AdoptWK, WKDoubleCreate(longitude)); WKDictionarySetItem(messageBody.get(), longitudeKeyWK.get(), longitudeWK.get()); WKRetainPtr<WKStringRef> accuracyKeyWK(AdoptWK, WKStringCreateWithUTF8CString("accuracy")); WKRetainPtr<WKDoubleRef> accuracyWK(AdoptWK, WKDoubleCreate(accuracy)); WKDictionarySetItem(messageBody.get(), accuracyKeyWK.get(), accuracyWK.get()); WKRetainPtr<WKStringRef> providesAltitudeKeyWK(AdoptWK, WKStringCreateWithUTF8CString("providesAltitude")); WKRetainPtr<WKBooleanRef> providesAltitudeWK(AdoptWK, WKBooleanCreate(providesAltitude)); WKDictionarySetItem(messageBody.get(), providesAltitudeKeyWK.get(), providesAltitudeWK.get()); WKRetainPtr<WKStringRef> altitudeKeyWK(AdoptWK, WKStringCreateWithUTF8CString("altitude")); WKRetainPtr<WKDoubleRef> altitudeWK(AdoptWK, WKDoubleCreate(altitude)); WKDictionarySetItem(messageBody.get(), altitudeKeyWK.get(), altitudeWK.get()); WKRetainPtr<WKStringRef> providesAltitudeAccuracyKeyWK(AdoptWK, WKStringCreateWithUTF8CString("providesAltitudeAccuracy")); WKRetainPtr<WKBooleanRef> providesAltitudeAccuracyWK(AdoptWK, WKBooleanCreate(providesAltitudeAccuracy)); WKDictionarySetItem(messageBody.get(), providesAltitudeAccuracyKeyWK.get(), providesAltitudeAccuracyWK.get()); WKRetainPtr<WKStringRef> altitudeAccuracyKeyWK(AdoptWK, WKStringCreateWithUTF8CString("altitudeAccuracy")); WKRetainPtr<WKDoubleRef> altitudeAccuracyWK(AdoptWK, WKDoubleCreate(altitudeAccuracy)); WKDictionarySetItem(messageBody.get(), altitudeAccuracyKeyWK.get(), altitudeAccuracyWK.get()); WKRetainPtr<WKStringRef> providesHeadingKeyWK(AdoptWK, WKStringCreateWithUTF8CString("providesHeading")); WKRetainPtr<WKBooleanRef> providesHeadingWK(AdoptWK, WKBooleanCreate(providesHeading)); WKDictionarySetItem(messageBody.get(), providesHeadingKeyWK.get(), providesHeadingWK.get()); WKRetainPtr<WKStringRef> headingKeyWK(AdoptWK, WKStringCreateWithUTF8CString("heading")); WKRetainPtr<WKDoubleRef> headingWK(AdoptWK, WKDoubleCreate(heading)); WKDictionarySetItem(messageBody.get(), headingKeyWK.get(), headingWK.get()); WKRetainPtr<WKStringRef> providesSpeedKeyWK(AdoptWK, WKStringCreateWithUTF8CString("providesSpeed")); WKRetainPtr<WKBooleanRef> providesSpeedWK(AdoptWK, WKBooleanCreate(providesSpeed)); WKDictionarySetItem(messageBody.get(), providesSpeedKeyWK.get(), providesSpeedWK.get()); WKRetainPtr<WKStringRef> speedKeyWK(AdoptWK, WKStringCreateWithUTF8CString("speed")); WKRetainPtr<WKDoubleRef> speedWK(AdoptWK, WKDoubleCreate(speed)); WKDictionarySetItem(messageBody.get(), speedKeyWK.get(), speedWK.get()); WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get()); }
void WebArchiveTest::didReceiveMessage(WKBundleRef bundle, WKStringRef messageName, WKTypeRef body) { if (!WKStringIsEqualToUTF8CString(messageName, "GetWebArchive")) return; if (WKGetTypeID(body) != WKBundlePageGetTypeID()) return; WKBundleFrameRef frame = WKBundlePageGetMainFrame(static_cast<WKBundlePageRef>(body)); if (!frame) return; WKBundlePostMessage(bundle, Util::toWK("DidGetWebArchive").get(), adoptWK(WKBundleFrameCopyWebArchive(frame)).get()); }
static void willLoadDataRequest(WKBundlePageRef page, WKURLRequestRef request, WKDataRef data, WKStringRef MIMEType, WKStringRef encodingName, WKURLRef unreachableURL, WKTypeRef userData, const void *clientInfo) { WKRetainPtr<WKMutableDictionaryRef> messageBody = adoptWK(WKMutableDictionaryCreate()); WKDictionarySetItem(messageBody.get(), Util::toWK("URLRequestReturn").get(), request); WKDictionarySetItem(messageBody.get(), Util::toWK("DataReturn").get(), data); WKDictionarySetItem(messageBody.get(), Util::toWK("MIMETypeReturn").get(), MIMEType); WKDictionarySetItem(messageBody.get(), Util::toWK("EncodingNameReturn").get(), encodingName); WKDictionarySetItem(messageBody.get(), Util::toWK("UnreachableURLReturn").get(), unreachableURL); WKDictionarySetItem(messageBody.get(), Util::toWK("UserDataReturn").get(), userData); WKBundlePostMessage(InjectedBundleController::singleton().bundle(), Util::toWK("WillLoadDataRequestReturn").get(), messageBody.get()); }
void InjectedBundle::didReceiveMessage(WKStringRef messageName, WKTypeRef messageBody) { if (WKStringIsEqualToUTF8CString(messageName, "BeginTest")) { ASSERT(!messageBody); WKRetainPtr<WKStringRef> ackMessageName(AdoptWK, WKStringCreateWithUTF8CString("Ack")); WKRetainPtr<WKStringRef> ackMessageBody(AdoptWK, WKStringCreateWithUTF8CString("BeginTest")); WKBundlePostMessage(m_bundle, ackMessageName.get(), ackMessageBody.get()); beginTesting(); return; } else if (WKStringIsEqualToUTF8CString(messageName, "Reset")) { m_state = Idle; resetLocalSettings(); return; } WKRetainPtr<WKStringRef> errorMessageName(AdoptWK, WKStringCreateWithUTF8CString("Error")); WKRetainPtr<WKStringRef> errorMessageBody(AdoptWK, WKStringCreateWithUTF8CString("Unknown")); WKBundlePostMessage(m_bundle, errorMessageName.get(), errorMessageBody.get()); }
void InjectedBundle::setVisibilityState(WKPageVisibilityState visibilityState, bool isInitialState) { WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetVisibilityState")); WKRetainPtr<WKMutableDictionaryRef> messageBody(AdoptWK, WKMutableDictionaryCreate()); WKRetainPtr<WKStringRef> visibilityStateKeyWK(AdoptWK, WKStringCreateWithUTF8CString("visibilityState")); WKRetainPtr<WKUInt64Ref> visibilityStateWK(AdoptWK, WKUInt64Create(visibilityState)); WKDictionaryAddItem(messageBody.get(), visibilityStateKeyWK.get(), visibilityStateWK.get()); WKRetainPtr<WKStringRef> isInitialKeyWK(AdoptWK, WKStringCreateWithUTF8CString("isInitialState")); WKRetainPtr<WKBooleanRef> isInitialWK(AdoptWK, WKBooleanCreate(isInitialState)); WKDictionaryAddItem(messageBody.get(), isInitialKeyWK.get(), isInitialWK.get()); WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get()); }
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()); }
void InjectedBundle::didReceiveMessage(WKStringRef messageName, WKTypeRef messageBody) { if (WKStringIsEqualToUTF8CString(messageName, "BeginTest")) { ASSERT(messageBody); ASSERT(WKGetTypeID(messageBody) == WKBooleanGetTypeID()); m_dumpPixels = WKBooleanGetValue(static_cast<WKBooleanRef>(messageBody)); WKRetainPtr<WKStringRef> ackMessageName(AdoptWK, WKStringCreateWithUTF8CString("Ack")); WKRetainPtr<WKStringRef> ackMessageBody(AdoptWK, WKStringCreateWithUTF8CString("BeginTest")); WKBundlePostMessage(m_bundle, ackMessageName.get(), ackMessageBody.get()); beginTesting(); return; } else if (WKStringIsEqualToUTF8CString(messageName, "Reset")) { ASSERT(messageBody); ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID()); WKDictionaryRef messageBodyDictionary = static_cast<WKDictionaryRef>(messageBody); WKRetainPtr<WKStringRef> shouldGCKey(AdoptWK, WKStringCreateWithUTF8CString("ShouldGC")); bool shouldGC = WKBooleanGetValue(static_cast<WKBooleanRef>(WKDictionaryGetItemForKey(messageBodyDictionary, shouldGCKey.get()))); if (shouldGC) WKBundleGarbageCollectJavaScriptObjects(m_bundle); m_state = Idle; m_dumpPixels = false; resetLocalSettings(); return; } WKRetainPtr<WKStringRef> errorMessageName(AdoptWK, WKStringCreateWithUTF8CString("Error")); WKRetainPtr<WKStringRef> errorMessageBody(AdoptWK, WKStringCreateWithUTF8CString("Unknown")); WKBundlePostMessage(m_bundle, errorMessageName.get(), errorMessageBody.get()); }
void InjectedBundle::done() { m_state = Stopping; page()->stopLoading(); setTopLoadingFrame(0); WKRetainPtr<WKStringRef> doneMessageName(AdoptWK, WKStringCreateWithUTF8CString("Done")); WKRetainPtr<WKStringRef> doneMessageBody(AdoptWK, WKStringCreateWithUTF8CString(m_outputStream.str().c_str())); WKBundlePostMessage(m_bundle, doneMessageName.get(), doneMessageBody.get()); closeOtherPages(); m_state = Idle; }
void InjectedBundle::queueLoad(WKStringRef url, WKStringRef target) { m_useWorkQueue = true; WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("QueueLoad")); WKRetainPtr<WKMutableDictionaryRef> loadData(AdoptWK, WKMutableDictionaryCreate()); WKRetainPtr<WKStringRef> urlKey(AdoptWK, WKStringCreateWithUTF8CString("url")); WKDictionarySetItem(loadData.get(), urlKey.get(), url); WKRetainPtr<WKStringRef> targetKey(AdoptWK, WKStringCreateWithUTF8CString("target")); WKDictionarySetItem(loadData.get(), targetKey.get(), target); WKBundlePostMessage(m_bundle, messageName.get(), loadData.get()); }
void InjectedBundle::setCustomPolicyDelegate(bool enabled, bool permissive) { WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetCustomPolicyDelegate")); WKRetainPtr<WKMutableDictionaryRef> messageBody(AdoptWK, WKMutableDictionaryCreate()); WKRetainPtr<WKStringRef> enabledKeyWK(AdoptWK, WKStringCreateWithUTF8CString("enabled")); WKRetainPtr<WKBooleanRef> enabledWK(AdoptWK, WKBooleanCreate(enabled)); WKDictionarySetItem(messageBody.get(), enabledKeyWK.get(), enabledWK.get()); WKRetainPtr<WKStringRef> permissiveKeyWK(AdoptWK, WKStringCreateWithUTF8CString("permissive")); WKRetainPtr<WKBooleanRef> permissiveWK(AdoptWK, WKBooleanCreate(permissive)); WKDictionarySetItem(messageBody.get(), permissiveKeyWK.get(), permissiveWK.get()); WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get()); }
void DOMWindowExtensionBasic::frameLoadFinished(WKBundleFrameRef frame) { bool mainFrame = !WKBundleFrameGetParentFrame(frame); if (mainFrame) m_finishedOneMainFrameLoad = true; char body[16384]; sprintf(body, "%s finished loading", mainFrame ? "Main frame" : "Subframe"); // Only consider load finished for the main frame const char* name = mainFrame ? "DidFinishLoadForMainFrame" : "DidFinishLoadForFrame"; WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString(name)); WKRetainPtr<WKStringRef> messageBody = adoptWK(WKStringCreateWithUTF8CString(body)); WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get()); sendExtensionStateMessage(); }
void InjectedBundle::setMockGeolocationPosition(double latitude, double longitude, double accuracy) { WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetMockGeolocationPosition")); WKRetainPtr<WKMutableDictionaryRef> messageBody(AdoptWK, WKMutableDictionaryCreate()); WKRetainPtr<WKStringRef> latitudeKeyWK(AdoptWK, WKStringCreateWithUTF8CString("latitude")); WKRetainPtr<WKDoubleRef> latitudeWK(AdoptWK, WKDoubleCreate(latitude)); WKDictionaryAddItem(messageBody.get(), latitudeKeyWK.get(), latitudeWK.get()); WKRetainPtr<WKStringRef> longitudeKeyWK(AdoptWK, WKStringCreateWithUTF8CString("longitude")); WKRetainPtr<WKDoubleRef> longitudeWK(AdoptWK, WKDoubleCreate(longitude)); WKDictionaryAddItem(messageBody.get(), longitudeKeyWK.get(), longitudeWK.get()); WKRetainPtr<WKStringRef> accuracyKeyWK(AdoptWK, WKStringCreateWithUTF8CString("accuracy")); WKRetainPtr<WKDoubleRef> accuracyWK(AdoptWK, WKDoubleCreate(accuracy)); WKDictionaryAddItem(messageBody.get(), accuracyKeyWK.get(), accuracyWK.get()); WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get()); }
void InjectedBundle::done() { m_state = Stopping; page()->stopLoading(); setTopLoadingFrame(0); WKRetainPtr<WKStringRef> doneMessageName(AdoptWK, WKStringCreateWithUTF8CString("Done")); WKRetainPtr<WKMutableDictionaryRef> doneMessageBody(AdoptWK, WKMutableDictionaryCreate()); WKRetainPtr<WKStringRef> textOutputKey(AdoptWK, WKStringCreateWithUTF8CString("TextOutput")); WKRetainPtr<WKStringRef> textOutput(AdoptWK, WKStringCreateWithUTF8CString(m_outputStream.str().c_str())); WKDictionaryAddItem(doneMessageBody.get(), textOutputKey.get(), textOutput.get()); WKRetainPtr<WKStringRef> pixelResultKey = adoptWK(WKStringCreateWithUTF8CString("PixelResult")); WKDictionaryAddItem(doneMessageBody.get(), pixelResultKey.get(), m_pixelResult.get()); WKBundlePostMessage(m_bundle, doneMessageName.get(), doneMessageBody.get()); closeOtherPages(); m_state = Idle; }
void InjectedBundle::queueLoadHTMLString(WKStringRef content, WKStringRef baseURL, WKStringRef unreachableURL) { m_useWorkQueue = true; WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("QueueLoadHTMLString")); WKRetainPtr<WKMutableDictionaryRef> loadData(AdoptWK, WKMutableDictionaryCreate()); WKRetainPtr<WKStringRef> contentKey(AdoptWK, WKStringCreateWithUTF8CString("content")); WKDictionarySetItem(loadData.get(), contentKey.get(), content); if (baseURL) { WKRetainPtr<WKStringRef> baseURLKey(AdoptWK, WKStringCreateWithUTF8CString("baseURL")); WKDictionarySetItem(loadData.get(), baseURLKey.get(), baseURL); } if (unreachableURL) { WKRetainPtr<WKStringRef> unreachableURLKey(AdoptWK, WKStringCreateWithUTF8CString("unreachableURL")); WKDictionarySetItem(loadData.get(), unreachableURLKey.get(), unreachableURL); } WKBundlePostMessage(m_bundle, messageName.get(), loadData.get()); }
void DOMWindowExtensionBasic::sendBundleMessage(const char* message) { WKRetainPtr<WKStringRef> wkMessage = adoptWK(WKStringCreateWithUTF8CString(message)); WKBundlePostMessage(m_bundle, wkMessage.get(), wkMessage.get()); }