https://bugs.webkit.org/show_bug.cgi?id=134432
<rdar://problem/
17484205>
Reviewed by Dan Bernstein.
After a crash, the WebPage never gets mimeTypesWithCustomContentProviders filled back in.
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage):
Add mimeTypesWithCustomContentProviders to WebPageCreationParameters.
* UIProcess/Cocoa/WKWebViewContentProviderRegistry.h:
* UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:
(-[WKWebViewContentProviderRegistry addPage:]):
We don't need to send the MIME types across when a page is added, because it already got them in its creation parameters.
(-[WKWebViewContentProviderRegistry removePage:]):
(-[WKWebViewContentProviderRegistry _mimeTypesWithCustomContentProviders]):
Return a vector of all registered MIME types.
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::mimeTypesWithCustomContentProviders):
* UIProcess/PageClient.h:
Add (iOS only for now) mimeTypesWithCustomContentProviders to PageClient.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@170570
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2014-06-28 Tim Horton <timothy_horton@apple.com>
+
+ [iOS][WK2] PDFs never load inline again after the Web process crashes
+ https://bugs.webkit.org/show_bug.cgi?id=134432
+ <rdar://problem/17484205>
+
+ Reviewed by Dan Bernstein.
+
+ After a crash, the WebPage never gets mimeTypesWithCustomContentProviders filled back in.
+
+ * Shared/WebPageCreationParameters.cpp:
+ (WebKit::WebPageCreationParameters::encode):
+ (WebKit::WebPageCreationParameters::decode):
+ * Shared/WebPageCreationParameters.h:
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::creationParameters):
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::WebPage):
+ Add mimeTypesWithCustomContentProviders to WebPageCreationParameters.
+
+ * UIProcess/Cocoa/WKWebViewContentProviderRegistry.h:
+ * UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:
+ (-[WKWebViewContentProviderRegistry addPage:]):
+ We don't need to send the MIME types across when a page is added, because it already got them in its creation parameters.
+
+ (-[WKWebViewContentProviderRegistry removePage:]):
+ (-[WKWebViewContentProviderRegistry _mimeTypesWithCustomContentProviders]):
+ Return a vector of all registered MIME types.
+
+ * UIProcess/ios/PageClientImplIOS.h:
+ * UIProcess/ios/PageClientImplIOS.mm:
+ (WebKit::PageClientImpl::mimeTypesWithCustomContentProviders):
+ * UIProcess/PageClient.h:
+ Add (iOS only for now) mimeTypesWithCustomContentProviders to PageClient.
+
2014-06-28 Dan Bernstein <mitz@apple.com>
REGRESSION: WebPageProxy::attributedSubstringForCharacterRangeAsync never calls its callback function
encoder.encodeEnum(scrollPinningBehavior);
encoder << backgroundExtendsBeyondPage;
encoder.encodeEnum(layerHostingMode);
+ encoder << mimeTypesWithCustomContentProviders;
#if ENABLE(REMOTE_INSPECTOR)
encoder << allowsRemoteInspection;
return false;
if (!decoder.decodeEnum(parameters.layerHostingMode))
return false;
+ if (!decoder.decode(parameters.mimeTypesWithCustomContentProviders))
+ return false;
#if ENABLE(REMOTE_INSPECTOR)
if (!decoder.decode(parameters.allowsRemoteInspection))
LayerHostingMode layerHostingMode;
+ Vector<String> mimeTypesWithCustomContentProviders;
+
#if ENABLE(REMOTE_INSPECTOR)
bool allowsRemoteInspection;
#endif
- (void)registerProvider:(Class <WKWebViewContentProvider>)contentProvider forMIMEType:(const String&)mimeType;
- (Class <WKWebViewContentProvider>)providerForMIMEType:(const String&)mimeType;
+- (Vector<String>)_mimeTypesWithCustomContentProviders;
+
@end
#endif // PLATFORM(IOS)
{
ASSERT(!_pages.contains(&page));
_pages.add(&page);
-
- for (auto& mimeType : _contentProviderForMIMEType.keys())
- page.addMIMETypeWithCustomContentProvider(mimeType);
}
- (void)removePage:(WebPageProxy&)page
{
ASSERT(_pages.contains(&page));
-
_pages.remove(&page);
}
return representation->value;
}
+- (Vector<String>)_mimeTypesWithCustomContentProviders
+{
+ Vector<String> mimeTypes;
+ copyKeysToVector(_contentProviderForMIMEType, mimeTypes);
+ return mimeTypes;
+}
+
@end
#endif // PLATFORM(IOS)
virtual void overflowScrollViewWillStartPanGesture() = 0;
virtual void overflowScrollViewDidScroll() = 0;
virtual void didFinishDrawingPagesToPDF(const IPC::DataReference&) = 0;
+ virtual Vector<String> mimeTypesWithCustomContentProviders() = 0;
#if ENABLE(INSPECTOR)
virtual void showInspectorHighlight(const WebCore::Highlight&) = 0;
parameters.screenSize = screenSize();
parameters.availableScreenSize = availableScreenSize();
parameters.textAutosizingWidth = textAutosizingWidth();
+ parameters.mimeTypesWithCustomContentProviders = m_pageClient.mimeTypesWithCustomContentProviders();
#endif
return parameters;
virtual void didFinishLoadingDataForCustomContentProvider(const String& suggestedFilename, const IPC::DataReference&) override;
+ virtual Vector<String> mimeTypesWithCustomContentProviders() override;
+
WKContentView *m_contentView;
WKWebView *m_webView;
};
#import "ViewSnapshotStore.h"
#import "WKContentView.h"
#import "WKContentViewInteraction.h"
+#import "WKWebViewConfigurationInternal.h"
+#import "WKWebViewContentProviderRegistry.h"
#import "WKWebViewInternal.h"
#import "WebContextMenuProxy.h"
#import "WebEditCommandProxy.h"
m_webView._printedDocument = adoptCF(CGPDFDocumentCreateWithProvider(dataProvider.get())).get();
}
+Vector<String> PageClientImpl::mimeTypesWithCustomContentProviders()
+{
+ return m_webView.configuration._contentProviderRegistry._mimeTypesWithCustomContentProviders;
+}
+
} // namespace WebKit
#endif // PLATFORM(IOS)
if (m_useAsyncScrolling)
WebProcess::shared().eventDispatcher().addScrollingTreeForPage(this);
#endif
+
+ for (auto& mimeType : parameters.mimeTypesWithCustomContentProviders)
+ m_mimeTypesWithCustomContentProviders.add(mimeType);
}
void WebPage::reinitializeWebPage(const WebPageCreationParameters& parameters)