Add a setting and preferences to enable/disable async image decoding
https://bugs.webkit.org/show_bug.cgi?id=164417
Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2016-11-04
Reviewed by Simon Fraser.
Source/WebCore:
Add an asyncImageDecodingEnabled setting. This setting controls whether an
image "can" be asynchronously decoded on a separate thread or not. The
function ImageSource::isAsyncDecodingRequired() will be used in conjunction
with this setting to decide whether an image "should" be asynchronously
decoded or not.
* page/Settings.in:
Source/WebKit/mac:
Hook up the asyncImageDecodingEnabled setting for WebKit1.
* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences asyncImageDecodingEnabled]):
(-[WebPreferences setAsyncImageDecodingEnabled:]):
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):
Source/WebKit2:
Hook up the asyncImageDecodingEnabled setting for WebKit2.
* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _asyncImageDecodingEnabled]):
(-[WKPreferences _setAsyncImageDecodingEnabled:]):
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
Tools:
Pref and a menu item to toggle asyncImageDecodingEnabled for WebKits 1 and 2.
* MiniBrowser/mac/SettingsController.h:
* MiniBrowser/mac/SettingsController.m:
(-[SettingsController _populateMenu]):
(-[SettingsController validateMenuItem:]):
(-[SettingsController toggleAsyncImageDecodingEnabled:]):
(-[SettingsController asyncImageDecodingEnabled]):
* MiniBrowser/mac/WK1BrowserWindowController.m:
(-[WK1BrowserWindowController didChangeSettings]):
* MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController didChangeSettings]):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@208399 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebKit/mac/WebView/WebPreferences.mm b/Source/WebKit/mac/WebView/WebPreferences.mm
index 8a83401..6c34825 100644
--- a/Source/WebKit/mac/WebView/WebPreferences.mm
+++ b/Source/WebKit/mac/WebView/WebPreferences.mm
@@ -507,6 +507,7 @@
[NSNumber numberWithBool:NO], WebKitAccelerated2dCanvasEnabledPreferenceKey,
[NSNumber numberWithBool:NO], WebKitSubpixelCSSOMElementMetricsEnabledPreferenceKey,
[NSNumber numberWithBool:NO], WebKitResourceLoadStatisticsEnabledPreferenceKey,
+ [NSNumber numberWithBool:YES], WebKitAsyncImageDecodingEnabledPreferenceKey,
#if PLATFORM(IOS)
[NSNumber numberWithBool:YES], WebKitFrameFlatteningEnabledPreferenceKey,
#else
@@ -1874,6 +1875,16 @@
[self _setBoolValue:enabled forKey:WebKitResourceLoadStatisticsEnabledPreferenceKey];
}
+- (BOOL)asyncImageDecodingEnabled
+{
+ return [self _boolValueForKey:WebKitAsyncImageDecodingEnabledPreferenceKey];
+}
+
+- (void)setAsyncImageDecodingEnabled:(BOOL)enabled
+{
+ [self _setBoolValue:enabled forKey:WebKitAsyncImageDecodingEnabledPreferenceKey];
+}
+
- (BOOL)canvasUsesAcceleratedDrawing
{
return [self _boolValueForKey:WebKitCanvasUsesAcceleratedDrawingPreferenceKey];