Title: [177459] trunk/Source/WebKit2
- Revision
- 177459
- Author
- commit-qu...@webkit.org
- Date
- 2014-12-17 13:19:21 -0800 (Wed, 17 Dec 2014)
Log Message
Web Inspector: [Mac] Occosional Crashes Closing Inspector
https://bugs.webkit.org/show_bug.cgi?id=139740
Patch by Joseph Pecoraro <pecor...@apple.com> on 2014-12-17
Reviewed by Timothy Hatcher.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didReceiveEvent):
The WebPageProxy could have gotten destroyed in handling (e.g. keyboard shortcut
to close the Inspector Window), so protect the object to avoid destruction
during handling.
* UIProcess/WebInspectorProxy.h:
* UIProcess/WebPageProxy.cpp:
Add platformInvalidate opportunity for the platform to do invalidation work.
* UIProcess/efl/WebInspectorProxyEfl.cpp:
(WebKit::WebInspectorProxy::platformInvalidate):
* UIProcess/gtk/WebInspectorProxyGtk.cpp:
(WebKit::WebInspectorProxy::platformInvalidate):
Empty implementations, these ports do not need to do anything.
* UIProcess/WebInspectorProxy.h:
* UIProcess/mac/WebInspectorProxyMac.mm:
(WebKit::WebInspectorProxy::closeTimerFired):
(WebKit::WebInspectorProxy::platformDidClose):
(WebKit::WebInspectorProxy::platformInvalidate):
When closing / invalidating make sure we close the WKView to clear client
for any delayed callbacks.
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (177458 => 177459)
--- trunk/Source/WebKit2/ChangeLog 2014-12-17 21:15:41 UTC (rev 177458)
+++ trunk/Source/WebKit2/ChangeLog 2014-12-17 21:19:21 UTC (rev 177459)
@@ -1,3 +1,34 @@
+2014-12-17 Joseph Pecoraro <pecor...@apple.com>
+
+ Web Inspector: [Mac] Occosional Crashes Closing Inspector
+ https://bugs.webkit.org/show_bug.cgi?id=139740
+
+ Reviewed by Timothy Hatcher.
+
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::didReceiveEvent):
+ The WebPageProxy could have gotten destroyed in handling (e.g. keyboard shortcut
+ to close the Inspector Window), so protect the object to avoid destruction
+ during handling.
+
+ * UIProcess/WebInspectorProxy.h:
+ * UIProcess/WebPageProxy.cpp:
+ Add platformInvalidate opportunity for the platform to do invalidation work.
+
+ * UIProcess/efl/WebInspectorProxyEfl.cpp:
+ (WebKit::WebInspectorProxy::platformInvalidate):
+ * UIProcess/gtk/WebInspectorProxyGtk.cpp:
+ (WebKit::WebInspectorProxy::platformInvalidate):
+ Empty implementations, these ports do not need to do anything.
+
+ * UIProcess/WebInspectorProxy.h:
+ * UIProcess/mac/WebInspectorProxyMac.mm:
+ (WebKit::WebInspectorProxy::closeTimerFired):
+ (WebKit::WebInspectorProxy::platformDidClose):
+ (WebKit::WebInspectorProxy::platformInvalidate):
+ When closing / invalidating make sure we close the WKView to clear client
+ for any delayed callbacks.
+
2014-12-17 Chris Dumez <cdu...@apple.com>
[iOS] Make it possible to toggle FeatureCounter support at runtime
Modified: trunk/Source/WebKit2/UIProcess/WebInspectorProxy.cpp (177458 => 177459)
--- trunk/Source/WebKit2/UIProcess/WebInspectorProxy.cpp 2014-12-17 21:15:41 UTC (rev 177458)
+++ trunk/Source/WebKit2/UIProcess/WebInspectorProxy.cpp 2014-12-17 21:19:21 UTC (rev 177459)
@@ -170,6 +170,7 @@
m_page->process().removeMessageReceiver(Messages::WebInspectorProxy::messageReceiverName(), m_page->pageID());
didClose();
+ platformInvalidate();
m_page = nullptr;
}
Modified: trunk/Source/WebKit2/UIProcess/WebInspectorProxy.h (177458 => 177459)
--- trunk/Source/WebKit2/UIProcess/WebInspectorProxy.h 2014-12-17 21:15:41 UTC (rev 177458)
+++ trunk/Source/WebKit2/UIProcess/WebInspectorProxy.h 2014-12-17 21:19:21 UTC (rev 177459)
@@ -157,6 +157,7 @@
WebPageProxy* platformCreateInspectorPage();
void platformOpen();
void platformDidClose();
+ void platformInvalidate();
void platformBringToFront();
void platformHide();
bool platformIsFront();
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (177458 => 177459)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2014-12-17 21:15:41 UTC (rev 177458)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2014-12-17 21:19:21 UTC (rev 177459)
@@ -4219,6 +4219,10 @@
if (!m_keyEventQueue.isEmpty())
m_process->send(Messages::WebPage::KeyEvent(m_keyEventQueue.first()), m_pageID);
+ // The call to doneWithKeyEvent may close this WebPage.
+ // Protect against this being destroyed.
+ Ref<WebPageProxy> protect(*this);
+
m_pageClient.doneWithKeyEvent(event, handled);
if (handled)
break;
Modified: trunk/Source/WebKit2/UIProcess/efl/WebInspectorProxyEfl.cpp (177458 => 177459)
--- trunk/Source/WebKit2/UIProcess/efl/WebInspectorProxyEfl.cpp 2014-12-17 21:15:41 UTC (rev 177458)
+++ trunk/Source/WebKit2/UIProcess/efl/WebInspectorProxyEfl.cpp 2014-12-17 21:19:21 UTC (rev 177459)
@@ -142,6 +142,10 @@
}
}
+void WebInspectorProxy::platformInvalidate()
+{
+}
+
void WebInspectorProxy::platformHide()
{
notImplemented();
Modified: trunk/Source/WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp (177458 => 177459)
--- trunk/Source/WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp 2014-12-17 21:15:41 UTC (rev 177458)
+++ trunk/Source/WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp 2014-12-17 21:19:21 UTC (rev 177459)
@@ -168,6 +168,10 @@
m_inspectorView = 0;
}
+void WebInspectorProxy::platformInvalidate()
+{
+}
+
void WebInspectorProxy::platformHide()
{
notImplemented();
Modified: trunk/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm (177458 => 177459)
--- trunk/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm 2014-12-17 21:15:41 UTC (rev 177458)
+++ trunk/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm 2014-12-17 21:19:21 UTC (rev 177459)
@@ -291,7 +291,11 @@
if (m_isAttached || m_inspectorWindow)
return;
- m_inspectorView = nil;
+ if (m_inspectorView) {
+ WebPageProxy* inspectorPage = toImpl(m_inspectorView.get().pageRef);
+ inspectorPage->close();
+ m_inspectorView = nil;
+ }
[m_inspectorProxyObjCAdapter close];
m_inspectorProxyObjCAdapter = nil;
@@ -544,6 +548,13 @@
m_closeTimer.startOneShot(webViewCloseTimeout);
}
+void WebInspectorProxy::platformInvalidate()
+{
+ m_closeTimer.stop();
+
+ closeTimerFired();
+}
+
void WebInspectorProxy::platformHide()
{
if (m_isAttached) {
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes