=== added file 'qt/tests/qmltests/crash/tst_bug1427828.html' --- qt/tests/qmltests/crash/tst_bug1427828.html 1970-01-01 00:00:00 +0000 +++ qt/tests/qmltests/crash/tst_bug1427828.html 2015-03-03 20:04:33 +0000 @@ -0,0 +1,5 @@ + +
+ + + === added file 'qt/tests/qmltests/crash/tst_bug1427828.qml' --- qt/tests/qmltests/crash/tst_bug1427828.qml 1970-01-01 00:00:00 +0000 +++ qt/tests/qmltests/crash/tst_bug1427828.qml 2015-03-03 20:04:33 +0000 @@ -0,0 +1,33 @@ +import QtQuick 2.0 +import QtTest 1.0 +import com.canonical.Oxide 1.0 +import com.canonical.Oxide.Testing 1.0 + +TestWebView { + id: webView + focus: true + width: 200 + height: 200 + + TestCase { + id: test + name: "bug1427828" + when: windowShown + + function test_bug1427828() { + webView.url = "http://testsuite/tst_bug1427828.html"; + verify(webView.waitForLoadSucceeded(), + "Timed out waiting for successful load"); + + webView.rootFrame.childFrames[0].sendMessageNoReply( + "oxide://testutils/", "DONT-RESPOND", {}); + + webView.rootFrame.sendMessageNoReply( + "oxide://testutils/", "DONT-RESPOND", {}); + + webView.url = "about:blank"; + verify(webView.waitForLoadSucceeded(), + "Timed out waiting for successful load"); + } + } +} === modified file 'shared/browser/oxide_web_frame.cc' --- shared/browser/oxide_web_frame.cc 2015-01-16 22:46:17 +0000 +++ shared/browser/oxide_web_frame.cc 2015-03-03 20:04:33 +0000 @@ -218,7 +218,10 @@ std::find(current_script_message_requests_.begin(), current_script_message_requests_.end(), req); - DCHECK(it != current_script_message_requests_.end()); + if (it == current_script_message_requests_.end()) { + // can happen for non "persisted" requests e.g. SendMessageNoReply + return; + } if (!destroyed_) { current_script_message_requests_.erase(it);