Title: [167573] trunk/Source/WebKit2
- Revision
- 167573
- Author
- [email protected]
- Date
- 2014-04-20 13:54:17 -0700 (Sun, 20 Apr 2014)
Log Message
[Cocoa] Crash when setting a bundle parameter to nil
https://bugs.webkit.org/show_bug.cgi?id=131917
Reviewed by Sam Weinig.
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _setObject:forBundleParameter:]): If the object is nil, use
-[NSMutableDictionary removeObjectForKey:] rather than -setObject:forKey:.
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessBundleParameters.mm:
(-[WKWebProcessBundleParameters setParameter:forKey:]): Ditto.
* WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
(WebKit::InjectedBundle::setBundleParameter): Unrelatedly, create m_bundleParameters if
needed, as it may have not been created on intialization if no bundle parameters were set
at the time.
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (167572 => 167573)
--- trunk/Source/WebKit2/ChangeLog 2014-04-20 20:53:39 UTC (rev 167572)
+++ trunk/Source/WebKit2/ChangeLog 2014-04-20 20:54:17 UTC (rev 167573)
@@ -1,5 +1,24 @@
2014-04-20 Dan Bernstein <[email protected]>
+ [Cocoa] Crash when setting a bundle parameter to nil
+ https://bugs.webkit.org/show_bug.cgi?id=131917
+
+ Reviewed by Sam Weinig.
+
+ * UIProcess/API/Cocoa/WKProcessPool.mm:
+ (-[WKProcessPool _setObject:forBundleParameter:]): If the object is nil, use
+ -[NSMutableDictionary removeObjectForKey:] rather than -setObject:forKey:.
+
+ * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessBundleParameters.mm:
+ (-[WKWebProcessBundleParameters setParameter:forKey:]): Ditto.
+
+ * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
+ (WebKit::InjectedBundle::setBundleParameter): Unrelatedly, create m_bundleParameters if
+ needed, as it may have not been created on intialization if no bundle parameters were set
+ at the time.
+
+2014-04-20 Dan Bernstein <[email protected]>
+
[Cocoa] Remove unused -webView:didFinishLoadingNavigation: delegate method
https://bugs.webkit.org/show_bug.cgi?id=131914
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm (167572 => 167573)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm 2014-04-20 20:53:39 UTC (rev 167572)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm 2014-04-20 20:54:17 UTC (rev 167573)
@@ -182,7 +182,11 @@
LOG_ERROR("Failed to encode bundle parameter: %@", exception);
}
- [_context->ensureBundleParameters() setObject:copy.get() forKey:parameter];
+ if (copy)
+ [_context->ensureBundleParameters() setObject:copy.get() forKey:parameter];
+ else
+ [_context->ensureBundleParameters() removeObjectForKey:parameter];
+
_context->sendToAllProcesses(Messages::WebProcess::SetInjectedBundleParameter(parameter, IPC::DataReference(static_cast<const uint8_t*>([data bytes]), [data length])));
}
Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessBundleParameters.mm (167572 => 167573)
--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessBundleParameters.mm 2014-04-20 20:53:39 UTC (rev 167572)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessBundleParameters.mm 2014-04-20 20:54:17 UTC (rev 167573)
@@ -52,7 +52,10 @@
- (void)setParameter:(id)parameter forKey:(NSString *)key
{
[self willChangeValueForKey:key];
- [_parameters setValue:parameter forKey:key];
+ if (parameter)
+ [_parameters setValue:parameter forKey:key];
+ else
+ [_parameters removeObjectForKey:key];
[self didChangeValueForKey:key];
}
Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/mac/InjectedBundleMac.mm (167572 => 167573)
--- trunk/Source/WebKit2/WebProcess/InjectedBundle/mac/InjectedBundleMac.mm 2014-04-20 20:53:39 UTC (rev 167572)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/mac/InjectedBundleMac.mm 2014-04-20 20:54:17 UTC (rev 167573)
@@ -152,6 +152,9 @@
LOG_ERROR("Failed to decode bundle parameter: %@", exception);
}
+ if (!m_bundleParameters && parameter)
+ m_bundleParameters = adoptNS([[WKWebProcessBundleParameters alloc] initWithDictionary:[NSDictionary dictionary]]);
+
[m_bundleParameters setParameter:parameter forKey:key];
#endif
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes