Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(95)

Issue 1943963003: WIP Handle AwContents needing multiple live functors. (Closed)

Created:
4 years, 7 months ago by Tobias Sargeant
Modified:
4 years, 7 months ago
Reviewers:
boliu
CC:
chromium-reviews, android-webview-reviews_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

WIP Handle AwContents needing multiple live functors. AwContents now needs to keep a functor per view. Either functor may be asked to draw its current frame at any time. New frames produced by the compositor go to the current RTM, and the BVR is interested in the geometry of the current RTM. Trim memory signal must go to all RTMs, and all RTMs must be able to hand back resources to the right compositor at any time, and not be forced to do so when a different RTM becomes current. BUG=597167 Committed: https://crrev.com/6f2a192ab2b7fe5bb6bdb7f58e0d0015816ba121 Cr-Commit-Position: refs/heads/master@{#394387}

Patch Set 1 #

Patch Set 2 : #

Patch Set 3 : #

Total comments: 30

Patch Set 4 : two functors may draw to the same GLSurfaceView during tests #

Patch Set 5 : native code comments; inform old producer when taking ownership of a consumer. #

Patch Set 6 : #

Patch Set 7 : #

Total comments: 14

Patch Set 8 : assert only non current consumers can be removed #

Patch Set 9 : remainder of comments from PS3 #

Patch Set 10 : PS7 comments #

Total comments: 9

Patch Set 11 : remove AwGLFunctor lifetime objects from AwContents destroy runnable #

Patch Set 12 : #

Patch Set 13 : comments addressed; unittests TODO #

Total comments: 4

Patch Set 14 : Testing framework changes to support testing multiple RenderThreadManager instances. #

Total comments: 33

Patch Set 15 : #

Total comments: 15

Patch Set 16 : Comments from PS15 #

Patch Set 17 : Destroy HardwareRenderer when detached and not awaiting a callback. #

Total comments: 14

Patch Set 18 : Comments from PS17 #

Unified diffs Side-by-side diffs Delta from patch set Stats (+374 lines, -185 lines) Patch
M android_webview/browser/browser_view_renderer.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 4 chunks +12 lines, -6 lines 0 comments Download
M android_webview/browser/browser_view_renderer.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 6 chunks +46 lines, -33 lines 0 comments Download
M android_webview/browser/browser_view_renderer_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 5 chunks +71 lines, -15 lines 0 comments Download
M android_webview/browser/compositor_frame_consumer.h View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +7 lines, -0 lines 0 comments Download
M android_webview/browser/compositor_frame_producer.h View 1 chunk +4 lines, -2 lines 0 comments Download
M android_webview/browser/render_thread_manager.cc View 1 2 3 4 5 6 7 8 9 10 11 14 3 chunks +5 lines, -2 lines 0 comments Download
M android_webview/browser/test/fake_window.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7 chunks +39 lines, -11 lines 0 comments Download
M android_webview/browser/test/fake_window.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 5 chunks +96 lines, -46 lines 0 comments Download
M android_webview/browser/test/rendering_test.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 3 chunks +2 lines, -7 lines 0 comments Download
M android_webview/browser/test/rendering_test.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 5 chunks +21 lines, -26 lines 0 comments Download
M android_webview/java/src/org/chromium/android_webview/AwContents.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 16 chunks +33 lines, -23 lines 0 comments Download
M android_webview/java/src/org/chromium/android_webview/AwGLFunctor.java View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 4 chunks +28 lines, -6 lines 0 comments Download
M android_webview/native/aw_contents.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +2 lines, -2 lines 0 comments Download
M android_webview/test/shell/src/org/chromium/android_webview/test/AwTestContainerView.java View 1 2 3 4 5 6 7 8 9 10 11 12 5 chunks +8 lines, -6 lines 0 comments Download

Messages

Total messages: 37 (7 generated)
Tobias Sargeant
4 years, 7 months ago (2016-05-04 16:06:44 UTC) #4
boliu
https://codereview.chromium.org/1943963003/diff/40001/android_webview/browser/browser_view_renderer.cc File android_webview/browser/browser_view_renderer.cc (right): https://codereview.chromium.org/1943963003/diff/40001/android_webview/browser/browser_view_renderer.cc#newcode96 android_webview/browser/browser_view_renderer.cc:96: compositor_frame_consumers_(), not necessary https://codereview.chromium.org/1943963003/diff/40001/android_webview/browser/browser_view_renderer.cc#newcode119 android_webview/browser/browser_view_renderer.cc:119: void BrowserViewRenderer::SetCompositorFrameConsumer( Feels like ...
4 years, 7 months ago (2016-05-04 16:58:52 UTC) #5
boliu
unit tests for the native changes? then you could do the java changes in a ...
4 years, 7 months ago (2016-05-04 17:01:13 UTC) #6
Tobias Sargeant
https://codereview.chromium.org/1943963003/diff/40001/android_webview/browser/browser_view_renderer.cc File android_webview/browser/browser_view_renderer.cc (right): https://codereview.chromium.org/1943963003/diff/40001/android_webview/browser/browser_view_renderer.cc#newcode119 android_webview/browser/browser_view_renderer.cc:119: void BrowserViewRenderer::SetCompositorFrameConsumer( On 2016/05/04 16:58:52, boliu wrote: > Feels ...
4 years, 7 months ago (2016-05-05 13:53:19 UTC) #7
boliu
https://codereview.chromium.org/1943963003/diff/40001/android_webview/browser/browser_view_renderer.cc File android_webview/browser/browser_view_renderer.cc (right): https://codereview.chromium.org/1943963003/diff/40001/android_webview/browser/browser_view_renderer.cc#newcode280 android_webview/browser/browser_view_renderer.cc:280: LOG(WARNING) << "XXX Setting current_compositor_frame_consumer_ to null"; On 2016/05/04 ...
4 years, 7 months ago (2016-05-05 14:09:35 UTC) #8
Tobias Sargeant
https://codereview.chromium.org/1943963003/diff/40001/android_webview/browser/browser_view_renderer.cc File android_webview/browser/browser_view_renderer.cc (right): https://codereview.chromium.org/1943963003/diff/40001/android_webview/browser/browser_view_renderer.cc#newcode96 android_webview/browser/browser_view_renderer.cc:96: compositor_frame_consumers_(), On 2016/05/04 16:58:52, boliu wrote: > not necessary ...
4 years, 7 months ago (2016-05-05 18:36:56 UTC) #9
Tobias Sargeant
https://codereview.chromium.org/1943963003/diff/140001/android_webview/browser/browser_view_renderer.cc File android_webview/browser/browser_view_renderer.cc (right): https://codereview.chromium.org/1943963003/diff/140001/android_webview/browser/browser_view_renderer.cc#newcode128 android_webview/browser/browser_view_renderer.cc:128: if (current_compositor_frame_consumer_->GetCompositorFrameProducer()) { On 2016/05/05 14:09:34, boliu wrote: > ...
4 years, 7 months ago (2016-05-05 19:06:46 UTC) #10
boliu
https://codereview.chromium.org/1943963003/diff/40001/android_webview/browser/browser_view_renderer.cc File android_webview/browser/browser_view_renderer.cc (right): https://codereview.chromium.org/1943963003/diff/40001/android_webview/browser/browser_view_renderer.cc#newcode280 android_webview/browser/browser_view_renderer.cc:280: LOG(WARNING) << "XXX Setting current_compositor_frame_consumer_ to null"; On 2016/05/05 ...
4 years, 7 months ago (2016-05-05 21:40:32 UTC) #11
Tobias Sargeant
https://codereview.chromium.org/1943963003/diff/200001/android_webview/browser/browser_view_renderer.cc File android_webview/browser/browser_view_renderer.cc (right): https://codereview.chromium.org/1943963003/diff/200001/android_webview/browser/browser_view_renderer.cc#newcode278 android_webview/browser/browser_view_renderer.cc:278: DCHECK(current_compositor_frame_consumer_ != compositor_frame_consumer); On 2016/05/05 21:40:32, boliu wrote: > ...
4 years, 7 months ago (2016-05-06 12:41:09 UTC) #12
boliu
https://codereview.chromium.org/1943963003/diff/40001/android_webview/java/src/org/chromium/android_webview/AwGLFunctor.java File android_webview/java/src/org/chromium/android_webview/AwGLFunctor.java (right): https://codereview.chromium.org/1943963003/diff/40001/android_webview/java/src/org/chromium/android_webview/AwGLFunctor.java#newcode96 android_webview/java/src/org/chromium/android_webview/AwGLFunctor.java:96: public void deleteHardwareRenderer() { On 2016/05/05 21:40:31, boliu wrote: ...
4 years, 7 months ago (2016-05-06 15:53:14 UTC) #13
boliu
https://codereview.chromium.org/1943963003/diff/280001/android_webview/browser/browser_view_renderer.cc File android_webview/browser/browser_view_renderer.cc (right): https://codereview.chromium.org/1943963003/diff/280001/android_webview/browser/browser_view_renderer.cc#newcode456 android_webview/browser/browser_view_renderer.cc:456: for (auto compositor_frame_consumer_ : compositor_frame_consumers_) { no _ suffix ...
4 years, 7 months ago (2016-05-10 15:18:20 UTC) #14
Tobias Sargeant
https://codereview.chromium.org/1943963003/diff/280001/android_webview/browser/test/fake_window.cc File android_webview/browser/test/fake_window.cc (right): https://codereview.chromium.org/1943963003/diff/280001/android_webview/browser/test/fake_window.cc#newcode91 android_webview/browser/test/fake_window.cc:91: void FakeWindow::InvokeFunctorOnRT(Functor* functor, On 2016/05/10 15:18:19, boliu wrote: > ...
4 years, 7 months ago (2016-05-10 16:01:18 UTC) #15
boliu
https://codereview.chromium.org/1943963003/diff/280001/android_webview/browser/test/fake_window.cc File android_webview/browser/test/fake_window.cc (right): https://codereview.chromium.org/1943963003/diff/280001/android_webview/browser/test/fake_window.cc#newcode91 android_webview/browser/test/fake_window.cc:91: void FakeWindow::InvokeFunctorOnRT(Functor* functor, On 2016/05/10 16:01:17, Tobias Sargeant wrote: ...
4 years, 7 months ago (2016-05-10 16:37:53 UTC) #16
Tobias Sargeant
https://codereview.chromium.org/1943963003/diff/280001/android_webview/browser/browser_view_renderer.cc File android_webview/browser/browser_view_renderer.cc (right): https://codereview.chromium.org/1943963003/diff/280001/android_webview/browser/browser_view_renderer.cc#newcode456 android_webview/browser/browser_view_renderer.cc:456: for (auto compositor_frame_consumer_ : compositor_frame_consumers_) { On 2016/05/10 15:18:18, ...
4 years, 7 months ago (2016-05-13 13:23:57 UTC) #18
boliu
test look mostly fine now remember the issue on M: we can't rely gc to ...
4 years, 7 months ago (2016-05-13 16:09:03 UTC) #19
Tobias Sargeant
https://codereview.chromium.org/1943963003/diff/320001/android_webview/browser/test/fake_window.cc File android_webview/browser/test/fake_window.cc (right): https://codereview.chromium.org/1943963003/diff/320001/android_webview/browser/test/fake_window.cc#newcode235 android_webview/browser/test/fake_window.cc:235: sync->Signal(); On 2016/05/13 16:09:01, boliu wrote: > My earlier ...
4 years, 7 months ago (2016-05-13 16:23:17 UTC) #20
Tobias Sargeant
4 years, 7 months ago (2016-05-13 16:23:21 UTC) #21
Tobias Sargeant
https://codereview.chromium.org/1943963003/diff/320001/android_webview/browser/browser_view_renderer_unittest.cc File android_webview/browser/browser_view_renderer_unittest.cc (right): https://codereview.chromium.org/1943963003/diff/320001/android_webview/browser/browser_view_renderer_unittest.cc#newcode355 android_webview/browser/browser_view_renderer_unittest.cc:355: std::unique_ptr<RenderThreadManager>(new RenderThreadManager( On 2016/05/13 16:09:01, boliu wrote: > use ...
4 years, 7 months ago (2016-05-13 17:02:37 UTC) #22
boliu
Ok, just need to handle the issue on M and this should be good
4 years, 7 months ago (2016-05-13 17:07:03 UTC) #23
boliu
https://codereview.chromium.org/1943963003/diff/360001/android_webview/browser/browser_view_renderer_unittest.cc File android_webview/browser/browser_view_renderer_unittest.cc (right): https://codereview.chromium.org/1943963003/diff/360001/android_webview/browser/browser_view_renderer_unittest.cc#newcode355 android_webview/browser/browser_view_renderer_unittest.cc:355: std::unique_ptr<RenderThreadManager>(new RenderThreadManager( again, base::WrapUnique https://codereview.chromium.org/1943963003/diff/360001/android_webview/java/src/org/chromium/android_webview/AwContents.java File android_webview/java/src/org/chromium/android_webview/AwContents.java (right): https://codereview.chromium.org/1943963003/diff/360001/android_webview/java/src/org/chromium/android_webview/AwContents.java#newcode3135 ...
4 years, 7 months ago (2016-05-17 15:00:11 UTC) #24
Tobias Sargeant
https://codereview.chromium.org/1943963003/diff/360001/android_webview/java/src/org/chromium/android_webview/AwContents.java File android_webview/java/src/org/chromium/android_webview/AwContents.java (right): https://codereview.chromium.org/1943963003/diff/360001/android_webview/java/src/org/chromium/android_webview/AwContents.java#newcode3135 android_webview/java/src/org/chromium/android_webview/AwContents.java:3135: mCurrentFunctor.pinHardwareRenderer(); On 2016/05/17 15:00:10, boliu wrote: > but this ...
4 years, 7 months ago (2016-05-17 15:07:36 UTC) #25
boliu
https://codereview.chromium.org/1943963003/diff/360001/android_webview/java/src/org/chromium/android_webview/AwGLFunctor.java File android_webview/java/src/org/chromium/android_webview/AwGLFunctor.java (right): https://codereview.chromium.org/1943963003/diff/360001/android_webview/java/src/org/chromium/android_webview/AwGLFunctor.java#newcode76 android_webview/java/src/org/chromium/android_webview/AwGLFunctor.java:76: ThreadUtils.runOnUiThread(new Runnable() { On 2016/05/17 15:07:36, Tobias Sargeant wrote: ...
4 years, 7 months ago (2016-05-17 15:09:43 UTC) #26
Tobias Sargeant
https://codereview.chromium.org/1943963003/diff/360001/android_webview/browser/browser_view_renderer_unittest.cc File android_webview/browser/browser_view_renderer_unittest.cc (right): https://codereview.chromium.org/1943963003/diff/360001/android_webview/browser/browser_view_renderer_unittest.cc#newcode355 android_webview/browser/browser_view_renderer_unittest.cc:355: std::unique_ptr<RenderThreadManager>(new RenderThreadManager( On 2016/05/17 15:00:10, boliu wrote: > again, ...
4 years, 7 months ago (2016-05-17 16:55:26 UTC) #27
boliu
lgtm I guess need to manually test and make sure nothing blows up.
4 years, 7 months ago (2016-05-17 17:25:45 UTC) #28
Tobias Sargeant
On 2016/05/17 17:25:45, boliu wrote: > lgtm > > I guess need to manually test ...
4 years, 7 months ago (2016-05-18 11:19:37 UTC) #29
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1943963003/380001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1943963003/380001
4 years, 7 months ago (2016-05-18 11:19:53 UTC) #31
commit-bot: I haz the power
Committed patchset #18 (id:380001)
4 years, 7 months ago (2016-05-18 11:53:52 UTC) #33
commit-bot: I haz the power
Patchset 18 (id:??) landed as https://crrev.com/6f2a192ab2b7fe5bb6bdb7f58e0d0015816ba121 Cr-Commit-Position: refs/heads/master@{#394387}
4 years, 7 months ago (2016-05-18 11:55:12 UTC) #35
boliu
forgot to update CL description..
4 years, 7 months ago (2016-05-18 13:52:13 UTC) #36
Tobias Sargeant
4 years, 7 months ago (2016-05-18 14:05:34 UTC) #37
Message was sent while issue was closed.
On 2016/05/18 13:52:13, boliu wrote:
> forgot to update CL description..

Yeah, I know. :(

Powered by Google App Engine
This is Rietveld 408576698