- Revision
- 124649
- Author
- [email protected]
- Date
- 2012-08-03 13:49:03 -0700 (Fri, 03 Aug 2012)
Log Message
Small part of "Out-of-process plug-ins should support asynchronous initialization."
<rdar://problem/10598594> and https://bugs.webkit.org/show_bug.cgi?id=92919
Reviewed by Anders Carlsson.
Source/WebKit2:
-Add API-level preferences for forcing asynchronous initialization of all plug-ins (for testing).
-Make sure "overridePreference" is hooked up properly for all needed preferences.
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetAsynchronousPluginInitializationEnabledForAllPlugins):
(WKPreferencesGetAsynchronousPluginInitializationEnabledForAllPlugins):
* UIProcess/API/C/WKPreferencesPrivate.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage):
(WebKit::WebPage::updatePreferences):
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::setAsynchronousPluginInitializationEnabled):
(WebKit::WebPage::asynchronousPluginInitializationEnabledForAllPlugins):
(WebKit::WebPage::setAsynchronousPluginInitializationEnabledForAllPlugins):
(WebKit::WebPage::setArtificialPluginInitializationDelayEnabled):
(WebPage):
Tools:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetStateToConsistentValues): Reset all preferences related to asynchronous plugin initialization.
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (124648 => 124649)
--- trunk/Source/WebKit2/ChangeLog 2012-08-03 20:41:02 UTC (rev 124648)
+++ trunk/Source/WebKit2/ChangeLog 2012-08-03 20:49:03 UTC (rev 124649)
@@ -1,3 +1,31 @@
+2012-08-03 Brady Eidson <[email protected]>
+
+ Small part of "Out-of-process plug-ins should support asynchronous initialization."
+ <rdar://problem/10598594> and https://bugs.webkit.org/show_bug.cgi?id=92919
+
+ Reviewed by Anders Carlsson.
+
+ -Add API-level preferences for forcing asynchronous initialization of all plug-ins (for testing).
+ -Make sure "overridePreference" is hooked up properly for all needed preferences.
+
+ * UIProcess/API/C/WKPreferences.cpp:
+ (WKPreferencesSetAsynchronousPluginInitializationEnabledForAllPlugins):
+ (WKPreferencesGetAsynchronousPluginInitializationEnabledForAllPlugins):
+ * UIProcess/API/C/WKPreferencesPrivate.h:
+
+ * WebProcess/InjectedBundle/InjectedBundle.cpp:
+ (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
+
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::WebPage):
+ (WebKit::WebPage::updatePreferences):
+ * WebProcess/WebPage/WebPage.h:
+ (WebKit::WebPage::setAsynchronousPluginInitializationEnabled):
+ (WebKit::WebPage::asynchronousPluginInitializationEnabledForAllPlugins):
+ (WebKit::WebPage::setAsynchronousPluginInitializationEnabledForAllPlugins):
+ (WebKit::WebPage::setArtificialPluginInitializationDelayEnabled):
+ (WebPage):
+
2012-08-02 Jeffrey Pfau <[email protected]>
Add API for enabling blanket third-party data blocking
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp (124648 => 124649)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp 2012-08-03 20:41:02 UTC (rev 124648)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp 2012-08-03 20:49:03 UTC (rev 124649)
@@ -854,6 +854,16 @@
return toImpl(preferencesRef)->asynchronousPluginInitializationEnabled();
}
+void WKPreferencesSetAsynchronousPluginInitializationEnabledForAllPlugins(WKPreferencesRef preferencesRef, bool enabled)
+{
+ toImpl(preferencesRef)->setAsynchronousPluginInitializationEnabledForAllPlugins(enabled);
+}
+
+bool WKPreferencesGetAsynchronousPluginInitializationEnabledForAllPlugins(WKPreferencesRef preferencesRef)
+{
+ return toImpl(preferencesRef)->asynchronousPluginInitializationEnabledForAllPlugins();
+}
+
void WKPreferencesSetArtificialPluginInitializationDelayEnabled(WKPreferencesRef preferencesRef, bool enabled)
{
toImpl(preferencesRef)->setArtificialPluginInitializationDelayEnabled(enabled);
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesPrivate.h (124648 => 124649)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesPrivate.h 2012-08-03 20:41:02 UTC (rev 124648)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesPrivate.h 2012-08-03 20:49:03 UTC (rev 124649)
@@ -196,6 +196,10 @@
WK_EXPORT bool WKPreferencesGetAsynchronousPluginInitializationEnabled(WKPreferencesRef preferencesRef);
// Defaults to false
+WK_EXPORT void WKPreferencesSetAsynchronousPluginInitializationEnabledForAllPlugins(WKPreferencesRef preferencesRef, bool enabled);
+WK_EXPORT bool WKPreferencesGetAsynchronousPluginInitializationEnabledForAllPlugins(WKPreferencesRef preferencesRef);
+
+// Defaults to false
WK_EXPORT void WKPreferencesSetArtificialPluginInitializationDelayEnabled(WKPreferencesRef preferencesRef, bool enabled);
WK_EXPORT bool WKPreferencesGetArtificialPluginInitializationDelayEnabled(WKPreferencesRef preferencesRef);
Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp (124648 => 124649)
--- trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp 2012-08-03 20:41:02 UTC (rev 124648)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp 2012-08-03 20:49:03 UTC (rev 124649)
@@ -131,6 +131,30 @@
// FIXME: Need an explicit way to set "WebKitTabToLinksPreferenceKey" directly in WebPage.
+ if (preference == "WebKit2AsynchronousPluginInitializationEnabled") {
+ WebPreferencesStore::overrideBoolValueForKey(WebPreferencesKey::asynchronousPluginInitializationEnabledKey(), enabled);
+ for (HashSet<Page*>::iterator i = pages.begin(); i != pages.end(); ++i) {
+ WebPage* webPage = static_cast<WebFrameLoaderClient*>((*i)->mainFrame()->loader()->client())->webFrame()->page();
+ webPage->setAsynchronousPluginInitializationEnabled(enabled);
+ }
+ }
+
+ if (preference == "WebKit2AsynchronousPluginInitializationEnabledForAllPlugins") {
+ WebPreferencesStore::overrideBoolValueForKey(WebPreferencesKey::asynchronousPluginInitializationEnabledForAllPluginsKey(), enabled);
+ for (HashSet<Page*>::iterator i = pages.begin(); i != pages.end(); ++i) {
+ WebPage* webPage = static_cast<WebFrameLoaderClient*>((*i)->mainFrame()->loader()->client())->webFrame()->page();
+ webPage->setAsynchronousPluginInitializationEnabledForAllPlugins(enabled);
+ }
+ }
+
+ if (preference == "WebKit2ArtificialPluginInitializationDelayEnabled") {
+ WebPreferencesStore::overrideBoolValueForKey(WebPreferencesKey::artificialPluginInitializationDelayEnabledKey(), enabled);
+ for (HashSet<Page*>::iterator i = pages.begin(); i != pages.end(); ++i) {
+ WebPage* webPage = static_cast<WebFrameLoaderClient*>((*i)->mainFrame()->loader()->client())->webFrame()->page();
+ webPage->setArtificialPluginInitializationDelayEnabled(enabled);
+ }
+ }
+
// Map the names used in LayoutTests with the names used in WebCore::Settings and WebPreferencesStore.
#define FOR_EACH_OVERRIDE_BOOL_PREFERENCE(macro) \
macro(WebKitAcceleratedCompositingEnabled, AcceleratedCompositingEnabled, acceleratedCompositingEnabled) \
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (124648 => 124649)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2012-08-03 20:41:02 UTC (rev 124648)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2012-08-03 20:49:03 UTC (rev 124649)
@@ -208,6 +208,7 @@
, m_isClosed(false)
, m_tabToLinks(false)
, m_asynchronousPluginInitializationEnabled(false)
+ , m_asynchronousPluginInitializationEnabledForAllPlugins(false)
, m_artificialPluginInitializationDelayEnabled(false)
#if PLATFORM(MAC)
, m_windowIsVisible(false)
@@ -1979,6 +1980,7 @@
m_tabToLinks = store.getBoolValueForKey(WebPreferencesKey::tabsToLinksKey());
m_asynchronousPluginInitializationEnabled = store.getBoolValueForKey(WebPreferencesKey::asynchronousPluginInitializationEnabledKey());
+ m_asynchronousPluginInitializationEnabledForAllPlugins = store.getBoolValueForKey(WebPreferencesKey::asynchronousPluginInitializationEnabledForAllPluginsKey());
m_artificialPluginInitializationDelayEnabled = store.getBoolValueForKey(WebPreferencesKey::artificialPluginInitializationDelayEnabledKey());
// FIXME: This should be generated from macro expansion for all preferences,
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (124648 => 124649)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h 2012-08-03 20:41:02 UTC (rev 124648)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h 2012-08-03 20:49:03 UTC (rev 124649)
@@ -571,7 +571,11 @@
#endif
bool asynchronousPluginInitializationEnabled() const { return m_asynchronousPluginInitializationEnabled; }
+ void setAsynchronousPluginInitializationEnabled(bool enabled) { m_asynchronousPluginInitializationEnabled = enabled; }
+ bool asynchronousPluginInitializationEnabledForAllPlugins() const { return m_asynchronousPluginInitializationEnabledForAllPlugins; }
+ void setAsynchronousPluginInitializationEnabledForAllPlugins(bool enabled) { m_asynchronousPluginInitializationEnabledForAllPlugins = enabled; }
bool artificialPluginInitializationDelayEnabled() const { return m_artificialPluginInitializationDelayEnabled; }
+ void setArtificialPluginInitializationDelayEnabled(bool enabled) { m_artificialPluginInitializationDelayEnabled = enabled; }
private:
WebPage(uint64_t pageID, const WebPageCreationParameters&);
@@ -763,6 +767,7 @@
bool m_tabToLinks;
bool m_asynchronousPluginInitializationEnabled;
+ bool m_asynchronousPluginInitializationEnabledForAllPlugins;
bool m_artificialPluginInitializationDelayEnabled;
#if PLATFORM(MAC)
Modified: trunk/Tools/ChangeLog (124648 => 124649)
--- trunk/Tools/ChangeLog 2012-08-03 20:41:02 UTC (rev 124648)
+++ trunk/Tools/ChangeLog 2012-08-03 20:49:03 UTC (rev 124649)
@@ -1,3 +1,13 @@
+2012-08-03 Brady Eidson <[email protected]>
+
+ Small part of "Out-of-process plug-ins should support asynchronous initialization."
+ <rdar://problem/10598594> and https://bugs.webkit.org/show_bug.cgi?id=92919
+
+ Reviewed by Anders Carlsson.
+
+ * WebKitTestRunner/TestController.cpp:
+ (WTR::TestController::resetStateToConsistentValues): Reset all preferences related to asynchronous plugin initialization.
+
2012-08-02 Jeffrey Pfau <[email protected]>
Add API for enabling blanket third-party data blocking
Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (124648 => 124649)
--- trunk/Tools/WebKitTestRunner/TestController.cpp 2012-08-03 20:41:02 UTC (rev 124648)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp 2012-08-03 20:49:03 UTC (rev 124649)
@@ -465,6 +465,9 @@
WKPreferencesSetFullScreenEnabled(preferences, true);
#endif
WKPreferencesSetPageCacheEnabled(preferences, false);
+ WKPreferencesSetAsynchronousPluginInitializationEnabled(preferences, false);
+ WKPreferencesSetAsynchronousPluginInitializationEnabledForAllPlugins(preferences, false);
+ WKPreferencesSetArtificialPluginInitializationDelayEnabled(preferences, false);
// [Qt][WK2]REGRESSION(r104881):It broke hundreds of tests
// FIXME: https://bugs.webkit.org/show_bug.cgi?id=76247