};
WKBundlePageSetResourceLoadClient(page, &resourceLoadClient);
- WKBundlePageLoaderClient loaderClient = {
- kWKBundlePageLoaderClientCurrentVersion,
- this, /* clientinfo */
- didStartProvisionalLoadForFrameCallback, /* didStartProvisionalLoadForFrame */
- 0, /* didReceiveServerRedirectForProvisionalLoadForFrame */
- 0, /* didFailProvisionalLoadWithErrorForFrame */
- didCommitLoadForFrameCallback, /* didCommitLoadForFrame */
- 0, /* didFinishDocumentLoadForFrame */
- 0, /* didFinishLoadForFrame */
- 0, /* didFailLoadWithErrorForFrame */
- 0, /* didSameDocumentNavigationForFrame */
- 0, /* didReceiveTitleForFrame */
- 0, /* didFirstLayoutForFrame */
- 0, /* didFirstVisuallyNonEmptyLayoutForFrame */
- didRemoveFrameFromHierarchyCallback, /* didRemoveFrameFromHierarchy */
- 0, /* didDisplayInsecureContentForFrame */
- 0, /* didRunInsecureContentForFrame */
- 0, /* didClearWindowObjectForFrame */
- 0, /* didCancelClientRedirectForFrame */
- 0, /* willPerformClientRedirectForFrame */
- 0, /* didHandleOnloadEventsForFrame */
- 0, /* didLayoutForFrame */
- 0, /* didNewFirstVisuallyNonEmptyLayout */
- 0, /* didDetectXSSForFrame */
- 0, /* shouldGoToBackForwardListItem */
- 0, /* globalObjectIsAvailableForFrame */
- 0, /* willDisconnectDOMWindowExtensionFromGlobalObject */
- 0, /* didReconnectDOMWindowExtensionToGlobalObject */
- 0, /* willDestroyGlobalObjectForDOMWindowExtension */
- 0, /* didFinishProgress */
- 0, /* shouldForceUniversalAccessFromLocalURL */
- 0, /* didReceiveIntentForFrame */
- 0, /* registerIntentServiceForFrame */
- };
- WKBundlePageSetPageLoaderClient(page, &loaderClient);
-
+ connectLoaderClientCallbacksToPage(page);
WKBundlePagePolicyClient policyClient = {
kWKBundlePagePolicyClientCurrentVersion, /* version */
BundleMessages::SHUTDOWN))
{
LogDebug("shutdown plugins");
+
if (m_pagesList.empty())
{
PluginModule::shutdown();
}
}
else if (WKStringIsEqualToUTF8CString(messageName,
+ BundleMessages::SUSPEND))
+ {
+ LogDebug("suspend plugins");
+ requestSuspend();
+ }
+ else if (WKStringIsEqualToUTF8CString(messageName,
+ BundleMessages::RESUME))
+ {
+ LogDebug("resume plugins");
+ requestResume();
+ }
+ else if (WKStringIsEqualToUTF8CString(messageName,
BundleMessages::SET_CUSTOM_PROPERTIES))
{
LogDebug("reset custom properties of window objects");
return std::string();
}
+void Bundle::requestSuspend()
+{
+ LogDebug("Unregister callbacks");
+ FOREACH(page, m_pagesList)
+ {
+ WKBundlePageSetPageLoaderClient(*page,NULL);
+ }
+}
+
+void Bundle::requestResume()
+{
+ LogDebug("Register callbacks");
+ FOREACH(page, m_pagesList)
+ {
+ connectLoaderClientCallbacksToPage(*page);
+ }
+}
+
+void Bundle::connectLoaderClientCallbacksToPage(WKBundlePageRef page)
+{
+ LogDebug("");
+
+ WKBundlePageLoaderClient loaderClient = {
+ kWKBundlePageLoaderClientCurrentVersion,
+ this, /* clientinfo */
+ didStartProvisionalLoadForFrameCallback, /* didStartProvisionalLoadForFrame */
+ 0, /* didReceiveServerRedirectForProvisionalLoadForFrame */
+ 0, /* didFailProvisionalLoadWithErrorForFrame */
+ didCommitLoadForFrameCallback, /* didCommitLoadForFrame */
+ 0, /* didFinishDocumentLoadForFrame */
+ 0, /* didFinishLoadForFrame */
+ 0, /* didFailLoadWithErrorForFrame */
+ 0, /* didSameDocumentNavigationForFrame */
+ 0, /* didReceiveTitleForFrame */
+ 0, /* didFirstLayoutForFrame */
+ 0, /* didFirstVisuallyNonEmptyLayoutForFrame */
+ didRemoveFrameFromHierarchyCallback, /* didRemoveFrameFromHierarchy */
+ 0, /* didDisplayInsecureContentForFrame */
+ 0, /* didRunInsecureContentForFrame */
+ 0, /* didClearWindowObjectForFrame */
+ 0, /* didCancelClientRedirectForFrame */
+ 0, /* willPerformClientRedirectForFrame */
+ 0, /* didHandleOnloadEventsForFrame */
+ 0, /* didLayoutForFrame */
+ 0, /* didNewFirstVisuallyNonEmptyLayout */
+ 0, /* didDetectXSSForFrame */
+ 0, /* shouldGoToBackForwardListItem */
+ 0, /* globalObjectIsAvailableForFrame */
+ 0, /* willDisconnectDOMWindowExtensionFromGlobalObject */
+ 0, /* didReconnectDOMWindowExtensionToGlobalObject */
+ 0, /* willDestroyGlobalObjectForDOMWindowExtension */
+ 0, /* didFinishProgress */
+ 0, /* shouldForceUniversalAccessFromLocalURL */
+ };
+ WKBundlePageSetPageLoaderClient(page, &loaderClient);
+}
+
extern "C"
{