Diff
Modified: trunk/Source/WebKit2/ChangeLog (184928 => 184929)
--- trunk/Source/WebKit2/ChangeLog 2015-05-28 00:16:47 UTC (rev 184928)
+++ trunk/Source/WebKit2/ChangeLog 2015-05-28 00:25:52 UTC (rev 184929)
@@ -1,3 +1,27 @@
+2015-05-27 Antti Koivisto <[email protected]>
+
+ Disable network cache for old clients
+ https://bugs.webkit.org/show_bug.cgi?id=145418
+ rdar://problem/21126587
+
+ Reviewed by Andy Estes.
+
+ Old clients might use NSURLCache API to clear the cache. New cache requires use of new APIs.
+
+ * UIProcess/Cocoa/VersionChecks.h: Added.
+ * UIProcess/Cocoa/VersionChecks.mm: Added.
+
+ Add linked-on-or-after check mechanism similar to WebKit1.
+
+ (WebKit::linkTimeVersion):
+ (WebKit::linkedOnOrAfter):
+ * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+ (WebKit::WebProcessPool::platformInitializeNetworkProcess):
+
+ Use it when deciding whether to enable the cache.
+
+ * WebKit2.xcodeproj/project.pbxproj:
+
2015-05-27 Dean Jackson <[email protected]>
img.currentSrc problem in strict mode with old picturefill
Added: trunk/Source/WebKit2/UIProcess/Cocoa/VersionChecks.h (0 => 184929)
--- trunk/Source/WebKit2/UIProcess/Cocoa/VersionChecks.h (rev 0)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/VersionChecks.h 2015-05-28 00:25:52 UTC (rev 184929)
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef VersionChecks_h
+#define VersionChecks_h
+
+namespace WebKit {
+
+/*
+ Version numbers are based on the 'current library version' specified in the WebKit build rules.
+ All of these methods return or take version numbers with each part shifted to the left 2 bytes.
+ For example the version 1.2.3 is returned as 0x00010203 and version 200.3.5 is returned as 0x00C80305
+ A version of -1 is returned if the main executable did not link against WebKit.
+
+ Please use the current WebKit version number, available in WebKit2/Configurations/Version.xcconfig,
+ when adding a new version constant.
+*/
+enum class LibraryVersion {
+ FirstWithNetworkCache = 0x02590116, // 601.1.22
+};
+
+bool linkedOnOrAfter(LibraryVersion);
+
+}
+
+#endif
Added: trunk/Source/WebKit2/UIProcess/Cocoa/VersionChecks.mm (0 => 184929)
--- trunk/Source/WebKit2/UIProcess/Cocoa/VersionChecks.mm (rev 0)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/VersionChecks.mm 2015-05-28 00:25:52 UTC (rev 184929)
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "config.h"
+#import "VersionChecks.h"
+
+#import <mach-o/dyld.h>
+
+namespace WebKit {
+
+static int linkTimeVersion()
+{
+ return NSVersionOfLinkTimeLibrary("WebKit");
+}
+
+bool linkedOnOrAfter(LibraryVersion version)
+{
+ int linkedVersion = linkTimeVersion();
+ if (linkedVersion == -1) {
+ // Not linked against WebKit.
+ return true;
+ }
+ return linkedVersion >= static_cast<int>(version);
+}
+
+}
Modified: trunk/Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm (184928 => 184929)
--- trunk/Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2015-05-28 00:16:47 UTC (rev 184928)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2015-05-28 00:25:52 UTC (rev 184929)
@@ -29,6 +29,7 @@
#import "PluginProcessManager.h"
#import "SandboxUtilities.h"
#import "TextChecker.h"
+#import "VersionChecks.h"
#import "WKBrowsingContextControllerInternal.h"
#import "WKBrowsingContextControllerInternal.h"
#import "WebKitSystemInterface.h"
@@ -255,7 +256,8 @@
#endif
#if ENABLE(NETWORK_CACHE)
- parameters.shouldEnableNetworkCache = [defaults boolForKey:WebKitNetworkCacheEnabledDefaultsKey] && ![defaults boolForKey:WebKitNetworkCacheTemporarilyDisabledForTestingKey];
+ bool networkCacheEnabledByDefaults = [defaults boolForKey:WebKitNetworkCacheEnabledDefaultsKey] && ![defaults boolForKey:WebKitNetworkCacheTemporarilyDisabledForTestingKey];
+ parameters.shouldEnableNetworkCache = networkCacheEnabledByDefaults && linkedOnOrAfter(LibraryVersion::FirstWithNetworkCache);
parameters.shouldEnableNetworkCacheEfficacyLogging = [defaults boolForKey:WebKitNetworkCacheEfficacyLoggingEnabledDefaultsKey];
#endif
Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (184928 => 184929)
--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj 2015-05-28 00:16:47 UTC (rev 184928)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj 2015-05-28 00:25:52 UTC (rev 184929)
@@ -1803,6 +1803,8 @@
E489D2901A0A2DB80078C06A /* NetworkCacheEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = E489D2891A0A2DB80078C06A /* NetworkCacheEncoder.h */; };
E49D40D71AD3FB170066B7B9 /* NetworkCacheBlobStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = E49D40D61AD3FB170066B7B9 /* NetworkCacheBlobStorage.h */; };
E49D40D91AD3FB210066B7B9 /* NetworkCacheBlobStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E49D40D81AD3FB210066B7B9 /* NetworkCacheBlobStorage.cpp */; };
+ E4E864921B16750100C82F40 /* VersionChecks.mm in Sources */ = {isa = PBXBuildFile; fileRef = E4E8648F1B1673FB00C82F40 /* VersionChecks.mm */; };
+ E4E864931B16750700C82F40 /* VersionChecks.h in Headers */ = {isa = PBXBuildFile; fileRef = E4E8648E1B1673FB00C82F40 /* VersionChecks.h */; };
ED82A7F2128C6FAF004477B3 /* WKBundlePageOverlay.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A22F0FF1289FCD90085E74F /* WKBundlePageOverlay.h */; settings = {ATTRIBUTES = (Private, ); }; };
EDCA71B7128DDA8C00201B26 /* WKBundlePageOverlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A22F1001289FCD90085E74F /* WKBundlePageOverlay.cpp */; };
F036978815F4BF0500C3A80E /* WebColorPicker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F036978715F4BF0500C3A80E /* WebColorPicker.cpp */; };
@@ -4074,6 +4076,8 @@
E489D2891A0A2DB80078C06A /* NetworkCacheEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkCacheEncoder.h; sourceTree = "<group>"; };
E49D40D61AD3FB170066B7B9 /* NetworkCacheBlobStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkCacheBlobStorage.h; sourceTree = "<group>"; };
E49D40D81AD3FB210066B7B9 /* NetworkCacheBlobStorage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkCacheBlobStorage.cpp; sourceTree = "<group>"; };
+ E4E8648E1B1673FB00C82F40 /* VersionChecks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VersionChecks.h; sourceTree = "<group>"; };
+ E4E8648F1B1673FB00C82F40 /* VersionChecks.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = VersionChecks.mm; sourceTree = "<group>"; };
F036978715F4BF0500C3A80E /* WebColorPicker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebColorPicker.cpp; sourceTree = "<group>"; };
F6113E24126CE1820057D0A7 /* APIUserContentURLPattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIUserContentURLPattern.h; sourceTree = "<group>"; };
F6113E26126CE19B0057D0A7 /* WKUserContentURLPattern.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKUserContentURLPattern.cpp; sourceTree = "<group>"; };
@@ -4962,6 +4966,8 @@
1A002D46196B345D00B9AD44 /* SessionStateCoding.mm */,
1AFE436418B6C081009C7A48 /* UIDelegate.h */,
1AFE436318B6C081009C7A48 /* UIDelegate.mm */,
+ E4E8648E1B1673FB00C82F40 /* VersionChecks.h */,
+ E4E8648F1B1673FB00C82F40 /* VersionChecks.mm */,
1AC0273E196622D600C12B75 /* WebPageProxyCocoa.mm */,
7C4694CB1A4B510A00AD5845 /* WebPasteboardProxyCocoa.mm */,
7CE4D2151A49148400C7F152 /* WebProcessPoolCocoa.mm */,
@@ -7674,6 +7680,7 @@
2DF9EEEE1A786EAD00B6CFBE /* APINavigationResponse.h in Headers */,
BC33DD681238464600360F3F /* APINumber.h in Headers */,
7C89D2981A6753B2003A5FDE /* APIPageConfiguration.h in Headers */,
+ E4E864931B16750700C82F40 /* VersionChecks.h in Headers */,
1AC1336C18565C7A00F3EC05 /* APIPageHandle.h in Headers */,
1AFDD3151891B54000153970 /* APIPolicyClient.h in Headers */,
7CE4D2201A4914CA00C7F152 /* APIProcessPoolConfiguration.h in Headers */,
@@ -9889,6 +9896,7 @@
1CA8B945127C882A00576C2B /* WebInspectorProxyMessageReceiver.cpp in Sources */,
1C891D6519B124FF00BA79DD /* WebInspectorUI.cpp in Sources */,
1CA8B954127C891500576C2B /* WebInspectorUIMac.mm in Sources */,
+ E4E864921B16750100C82F40 /* VersionChecks.mm in Sources */,
1CBBE4A019B66C53006B7D81 /* WebInspectorUIMessageReceiver.cpp in Sources */,
2DA944A11884E4F000ED86DB /* WebIOSEventFactory.mm in Sources */,
C0337DD3127A2A0E008FF4F4 /* WebKeyboardEvent.cpp in Sources */,