Merge lp:~abreu-alexandre/oxide/fix-unloads-crash into lp:~oxide-developers/oxide/oxide.trunk

Proposed by Alexandre Abreu
Status: Superseded
Proposed branch: lp:~abreu-alexandre/oxide/fix-unloads-crash
Merge into: lp:~oxide-developers/oxide/oxide.trunk
Diff against target: 158 lines (+72/-1) (has conflicts)
6 files modified
CHROMIUM_VERSION (+4/-0)
patches/enable-accelerated-canvas-on-arale.patch (+4/-0)
qt/VERSION (+4/-0)
shared/browser/oxide_browser_process_main.cc (+6/-0)
shared/browser/oxide_web_contents_unloader.cc (+36/-1)
shared/browser/oxide_web_view.cc (+18/-0)
Text conflict in CHROMIUM_VERSION
Text conflict in patches/enable-accelerated-canvas-on-arale.patch
Text conflict in qt/VERSION
Text conflict in shared/browser/oxide_web_contents_unloader.cc
Text conflict in shared/browser/oxide_web_view.cc
To merge this branch: bzr merge lp:~abreu-alexandre/oxide/fix-unloads-crash
Reviewer Review Type Date Requested Status
Chris Coulson Pending
Review via email: mp+259191@code.launchpad.net

This proposal has been superseded by a proposal from 2015-05-15.

Commit message

Fix premature web contents ptr release

Description of the change

Fix premature web contents ptr release

To post a comment you must log in.

Unmerged revisions

1061. By Alexandre Abreu

Fix early web contents ptr release

1060. By Alexandre Abreu

Fix race in web contents unloads that can be triggered when the renderer dies as the contents unload has started

1059. By Chris Coulson

Bump Chromium rev to 43.0.2357.52

1058. By Chris Coulson

Automatically bump qt revision to 1.7.8

1057. By Olivier Tilloy

Fix a crash when a JS dialog is dismissed twice (by calling accept() and then reject() on it).

1056. By Olivier Tilloy

Fix a crash when a popup menu is dismissed twice (by calling accept() and then cancel() on it).

1055. By Chris Coulson

Bump Chromium rev to 43.0.2357.45

1054. By Chris Coulson

Automatically bump qt revision to 1.7.7

1053. By Chris Coulson

Don't crash when the frame tree is torn down during a process swap

1052. By Chris Coulson

Automatically bump qt revision to 1.7.6

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'CHROMIUM_VERSION'
--- CHROMIUM_VERSION 2015-05-05 19:10:05 +0000
+++ CHROMIUM_VERSION 2015-05-15 01:52:36 +0000
@@ -1,1 +1,5 @@
1<<<<<<< TREE
144.0.2391.0244.0.2391.0
3=======
443.0.2357.52
5>>>>>>> MERGE-SOURCE
26
=== modified file 'patches/enable-accelerated-canvas-on-arale.patch'
--- patches/enable-accelerated-canvas-on-arale.patch 2015-05-04 11:31:03 +0000
+++ patches/enable-accelerated-canvas-on-arale.patch 2015-05-15 01:52:36 +0000
@@ -4,7 +4,11 @@
4diff --git a/gpu/config/software_rendering_list_json.cc b/gpu/config/software_rendering_list_json.cc4diff --git a/gpu/config/software_rendering_list_json.cc b/gpu/config/software_rendering_list_json.cc
5--- a/gpu/config/software_rendering_list_json.cc5--- a/gpu/config/software_rendering_list_json.cc
6+++ b/gpu/config/software_rendering_list_json.cc6+++ b/gpu/config/software_rendering_list_json.cc
7<<<<<<< TREE
7@@ -1096,29 +1096,16 @@ LONG_STRING_CONST(8@@ -1096,29 +1096,16 @@ LONG_STRING_CONST(
9=======
10@@ -1182,29 +1182,16 @@ LONG_STRING_CONST(
11>>>>>>> MERGE-SOURCE
8 },12 },
9 "vendor_id": "0x8086",13 "vendor_id": "0x8086",
10 "device_id": ["0x2a02"],14 "device_id": ["0x2a02"],
1115
=== modified file 'qt/VERSION'
--- qt/VERSION 2015-04-07 11:04:04 +0000
+++ qt/VERSION 2015-05-15 01:52:36 +0000
@@ -1,3 +1,7 @@
1MAJOR=11MAJOR=1
2<<<<<<< TREE
2MINOR=83MINOR=8
3PATCH=04PATCH=0
5=======
6MINOR=7
7PATCH=8>>>>>>> MERGE-SOURCE
48
=== modified file 'shared/browser/oxide_browser_process_main.cc'
--- shared/browser/oxide_browser_process_main.cc 2015-05-11 14:47:21 +0000
+++ shared/browser/oxide_browser_process_main.cc 2015-05-15 01:52:36 +0000
@@ -242,6 +242,9 @@
242 // Remove this when we implement a selection API (see bug #1324292)242 // Remove this when we implement a selection API (see bug #1324292)
243 command_line->AppendSwitch(switches::kDisableTouchEditing);243 command_line->AppendSwitch(switches::kDisableTouchEditing);
244244
245 // See https://launchpad.net/bugs/1442413
246 command_line->AppendSwitch("disable-mojo-channel");
247
245 if (gl_impl == gfx::kGLImplementationNone ||248 if (gl_impl == gfx::kGLImplementationNone ||
246 IsEnvironmentOptionEnabled("DISABLE_GPU")) {249 IsEnvironmentOptionEnabled("DISABLE_GPU")) {
247 command_line->AppendSwitch(switches::kDisableGpu);250 command_line->AppendSwitch(switches::kDisableGpu);
@@ -267,6 +270,9 @@
267 if (IsEnvironmentOptionEnabled("NO_SANDBOX")) {270 if (IsEnvironmentOptionEnabled("NO_SANDBOX")) {
268 command_line->AppendSwitch(switches::kNoSandbox);271 command_line->AppendSwitch(switches::kNoSandbox);
269 } else {272 } else {
273 // See https://launchpad.net/bugs/1447311
274 command_line->AppendSwitch(switches::kDisableNamespaceSandbox);
275
270 if (IsEnvironmentOptionEnabled("DISABLE_SETUID_SANDBOX")) {276 if (IsEnvironmentOptionEnabled("DISABLE_SETUID_SANDBOX")) {
271 command_line->AppendSwitch(switches::kDisableSetuidSandbox);277 command_line->AppendSwitch(switches::kDisableSetuidSandbox);
272 }278 }
273279
=== modified file 'shared/browser/oxide_web_contents_unloader.cc'
--- shared/browser/oxide_web_contents_unloader.cc 2015-05-13 21:53:33 +0000
+++ shared/browser/oxide_web_contents_unloader.cc 2015-05-15 01:52:36 +0000
@@ -23,8 +23,35 @@
23#include "base/memory/singleton.h"23#include "base/memory/singleton.h"
24#include "base/message_loop/message_loop.h"24#include "base/message_loop/message_loop.h"
25#include "base/run_loop.h"25#include "base/run_loop.h"
26<<<<<<< TREE
27=======
28#include "base/supports_user_data.h"
29#include "content/public/browser/render_view_host.h"
30>>>>>>> MERGE-SOURCE
26#include "content/public/browser/web_contents.h"31#include "content/public/browser/web_contents.h"
27#include "content/public/browser/web_contents_observer.h"32<<<<<<< TREE
33#include "content/public/browser/web_contents_observer.h"
34=======
35#include "content/public/browser/web_contents_observer.h"
36
37
38class WebContentsUnloaderObserver : public content::WebContentsObserver,
39 public base::SupportsUserData::Data {
40public:
41 explicit WebContentsUnloaderObserver(
42 content::WebContents* contents)
43 : content::WebContentsObserver(contents) {}
44 virtual ~WebContentsUnloaderObserver() {}
45
46 void RenderProcessGone(base::TerminationStatus status) override {
47 web_contents()->GetDelegate()->CloseContents(web_contents());
48 }
49};
50
51namespace {
52const char kWebContentsUnloaderObserverKey[] = "oxide_web_contents_unloader_observer_data";
53}
54>>>>>>> MERGE-SOURCE
2855
29namespace oxide {56namespace oxide {
3057
@@ -80,9 +107,17 @@
80 return;107 return;
81 }108 }
82109
110<<<<<<< TREE
83 // To intercept render process crashes111 // To intercept render process crashes
84 new WebContentsUnloaderObserver(contents.get());112 new WebContentsUnloaderObserver(contents.get());
85113
114=======
115 content::WebContents* wc = contents.get();
116 wc->SetUserData(
117 kWebContentsUnloaderObserverKey,
118 new WebContentsUnloaderObserver(wc));
119
120>>>>>>> MERGE-SOURCE
86 // So we can intercept CloseContents121 // So we can intercept CloseContents
87 contents->SetDelegate(this);122 contents->SetDelegate(this);
88123
89124
=== modified file 'shared/browser/oxide_web_view.cc'
--- shared/browser/oxide_web_view.cc 2015-05-14 15:37:57 +0000
+++ shared/browser/oxide_web_view.cc 2015-05-15 01:52:36 +0000
@@ -1050,6 +1050,7 @@
10501050
1051void WebView::FrameDeleted(content::RenderFrameHost* render_frame_host) {1051void WebView::FrameDeleted(content::RenderFrameHost* render_frame_host) {
1052 WebFrame* frame = WebFrame::FromRenderFrameHost(render_frame_host);1052 WebFrame* frame = WebFrame::FromRenderFrameHost(render_frame_host);
1053<<<<<<< TREE
1053 if (!frame) {1054 if (!frame) {
1054 // When a frame is detached, we get notified before any of its children1055 // When a frame is detached, we get notified before any of its children
1055 // are detached. If we hit this case, it means that this is a child of a1056 // are detached. If we hit this case, it means that this is a child of a
@@ -1072,6 +1073,23 @@
1072 frames.pop();1073 frames.pop();
1073 }1074 }
10741075
1076=======
1077 if (!frame) {
1078 // When a frame is detached, we get notified before any of its children
1079 // are detached. If we hit this case, it means that this is a child of a
1080 // frame that's being detached, and we've already deleted the corresponding
1081 // WebFrame
1082 return;
1083 }
1084
1085 // This is a bit of a hack, but we need to process children now - see the
1086 // comment above
1087 for (size_t i = 0; i < frame->GetChildCount(); ++i) {
1088 certificate_error_manager_.FrameDetached(frame->GetChildAt(i));
1089 }
1090
1091 certificate_error_manager_.FrameDetached(frame);
1092>>>>>>> MERGE-SOURCE
1075 WebFrame::Destroy(frame);1093 WebFrame::Destroy(frame);
1076}1094}
10771095
10781096
=== modified file 'shared/shared.gyp'

Subscribers

People subscribed via source and target branches