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

Issue 420603011: Split Screen mode implementation (Closed)

Created:
6 years, 5 months ago by mfomitchev
Modified:
6 years, 4 months ago
CC:
chromium-reviews, Mr4D (OOO till 08-26)
Base URL:
https://chromium.googlesource.com/chromium/src.git@split_view
Project:
chromium
Visibility:
Public.

Description

Split Screen mode implementation. Implements Split Screen mode and window cycling behavior. BUG=383421 Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=288593

Patch Set 1 #

Total comments: 40

Patch Set 2 : Addressing some of the review feedback. #

Patch Set 3 : Rebase #

Patch Set 4 : Fixing include #

Patch Set 5 : FIxing the crash - removing const & #

Patch Set 6 : Fix accidental check-in #

Patch Set 7 : Re-submitting fix for the crash. #

Patch Set 8 : Implementing review feedback. #

Patch Set 9 : Fixed upstream branch #

Total comments: 14

Patch Set 10 : Addressing mukai's review feedback. #

Total comments: 38

Patch Set 11 : Addressing review feedback + Rebase. #

Total comments: 14

Patch Set 12 : Addressing review feedback. #

Total comments: 8

Patch Set 13 : Fixing nits + Rebase #

Patch Set 14 : Fixing a rebase glitch #

Total comments: 16

Patch Set 15 : Addressing sadrul's feedback, adding license header. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+566 lines, -95 lines) Patch
M athena/athena.gyp View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +5 lines, -2 lines 0 comments Download
M athena/wm/bezel_controller.h View 1 2 3 4 5 6 7 8 9 10 11 2 chunks +7 lines, -5 lines 0 comments Download
M athena/wm/bezel_controller.cc View 1 2 3 4 5 6 7 8 9 10 11 11 chunks +51 lines, -33 lines 0 comments Download
A athena/wm/mru_window_tracker.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +49 lines, -0 lines 0 comments Download
A athena/wm/mru_window_tracker.cc View 1 2 3 4 5 6 7 8 9 10 1 chunk +53 lines, -0 lines 0 comments Download
A athena/wm/public/window_list_provider.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +27 lines, -0 lines 0 comments Download
M athena/wm/public/window_manager.h View 1 1 chunk +2 lines, -0 lines 0 comments Download
M athena/wm/public/window_manager_observer.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +2 lines, -2 lines 0 comments Download
M athena/wm/split_view_controller.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +77 lines, -2 lines 0 comments Download
M athena/wm/split_view_controller.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +246 lines, -2 lines 0 comments Download
M athena/wm/window_manager_impl.cc View 1 2 3 4 5 6 7 8 9 10 11 12 6 chunks +20 lines, -4 lines 0 comments Download
M athena/wm/window_overview_mode.h View 1 2 3 4 5 6 7 8 9 10 2 chunks +3 lines, -4 lines 0 comments Download
M athena/wm/window_overview_mode.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 13 chunks +24 lines, -41 lines 0 comments Download

Messages

Total messages: 42 (0 generated)
mfomitchev
mukai@chromium.org: Please review changes in oshima@chromium.org: Please review changes in
6 years, 5 months ago (2014-07-25 19:18:34 UTC) #1
mfomitchev
The implementation is functional. I just need to clean the code up a bit (remove ...
6 years, 5 months ago (2014-07-25 19:23:06 UTC) #2
Jun Mukai
https://codereview.chromium.org/420603011/diff/1/athena/wm/bezel_controller.cc File athena/wm/bezel_controller.cc (right): https://codereview.chromium.org/420603011/diff/1/athena/wm/bezel_controller.cc#newcode43 athena/wm/bezel_controller.cc:43: gfx::Point point_in_screen(location.x(), location.y()); point_in_screen(location) would copy it. https://codereview.chromium.org/420603011/diff/1/athena/wm/bezel_controller.cc#newcode47 athena/wm/bezel_controller.cc:47: ...
6 years, 5 months ago (2014-07-25 20:21:30 UTC) #3
oshima
https://codereview.chromium.org/420603011/diff/1/athena/wm/coordinate_conversion.h File athena/wm/coordinate_conversion.h (right): https://codereview.chromium.org/420603011/diff/1/athena/wm/coordinate_conversion.h#newcode20 athena/wm/coordinate_conversion.h:20: void ConvertPointToScreen(const aura::Window* window, On 2014/07/25 20:21:29, Jun Mukai ...
6 years, 5 months ago (2014-07-25 21:41:11 UTC) #4
mfomitchev
https://codereview.chromium.org/420603011/diff/1/athena/wm/bezel_controller.cc File athena/wm/bezel_controller.cc (right): https://codereview.chromium.org/420603011/diff/1/athena/wm/bezel_controller.cc#newcode43 athena/wm/bezel_controller.cc:43: gfx::Point point_in_screen(location.x(), location.y()); Doesn't look like I can pass ...
6 years, 5 months ago (2014-07-25 23:27:38 UTC) #5
Jun Mukai
https://codereview.chromium.org/420603011/diff/1/athena/wm/bezel_controller.cc File athena/wm/bezel_controller.cc (right): https://codereview.chromium.org/420603011/diff/1/athena/wm/bezel_controller.cc#newcode43 athena/wm/bezel_controller.cc:43: gfx::Point point_in_screen(location.x(), location.y()); On 2014/07/25 23:27:38, mfomitchev wrote: > ...
6 years, 5 months ago (2014-07-25 23:44:23 UTC) #6
mfomitchev
https://codereview.chromium.org/420603011/diff/1/athena/wm/bezel_controller.cc File athena/wm/bezel_controller.cc (right): https://codereview.chromium.org/420603011/diff/1/athena/wm/bezel_controller.cc#newcode43 athena/wm/bezel_controller.cc:43: gfx::Point point_in_screen(location.x(), location.y()); Cool, will do. https://codereview.chromium.org/420603011/diff/1/athena/wm/bezel_controller.cc#newcode47 athena/wm/bezel_controller.cc:47: : ...
6 years, 5 months ago (2014-07-26 02:08:43 UTC) #7
Jun Mukai
https://codereview.chromium.org/420603011/diff/1/athena/wm/bezel_controller.cc File athena/wm/bezel_controller.cc (right): https://codereview.chromium.org/420603011/diff/1/athena/wm/bezel_controller.cc#newcode47 athena/wm/bezel_controller.cc:47: : point_in_screen.x() - container_->GetBoundsInScreen().width(); On 2014/07/26 02:08:43, mfomitchev wrote: ...
6 years, 5 months ago (2014-07-26 20:30:37 UTC) #8
oshima
https://codereview.chromium.org/420603011/diff/1/athena/wm/window_manager_impl.cc File athena/wm/window_manager_impl.cc (left): https://codereview.chromium.org/420603011/diff/1/athena/wm/window_manager_impl.cc#oldcode71 athena/wm/window_manager_impl.cc:71: container_->StackChildAtTop(window); This should have called wm::ActivateWindow instead. https://codereview.chromium.org/420603011/diff/1/athena/wm/window_manager_impl.cc File ...
6 years, 4 months ago (2014-07-28 17:58:43 UTC) #9
mfomitchev
https://codereview.chromium.org/420603011/diff/1/athena/wm/window_manager_impl.cc File athena/wm/window_manager_impl.cc (right): https://codereview.chromium.org/420603011/diff/1/athena/wm/window_manager_impl.cc#newcode133 athena/wm/window_manager_impl.cc:133: aura::Window::Windows ordered_windows_; I can't rely on the container's window ...
6 years, 4 months ago (2014-07-28 18:15:00 UTC) #10
oshima
https://codereview.chromium.org/420603011/diff/1/athena/wm/window_manager_impl.cc File athena/wm/window_manager_impl.cc (right): https://codereview.chromium.org/420603011/diff/1/athena/wm/window_manager_impl.cc#newcode133 athena/wm/window_manager_impl.cc:133: aura::Window::Windows ordered_windows_; On 2014/07/28 18:15:00, mfomitchev wrote: > I ...
6 years, 4 months ago (2014-07-28 18:35:20 UTC) #11
mfomitchev
https://codereview.chromium.org/420603011/diff/1/athena/wm/window_manager_impl.cc File athena/wm/window_manager_impl.cc (right): https://codereview.chromium.org/420603011/diff/1/athena/wm/window_manager_impl.cc#newcode133 athena/wm/window_manager_impl.cc:133: aura::Window::Windows ordered_windows_; SplitViewController implements window switching - you can ...
6 years, 4 months ago (2014-07-28 18:57:42 UTC) #12
oshima
On 2014/07/28 18:57:42, mfomitchev wrote: > https://codereview.chromium.org/420603011/diff/1/athena/wm/window_manager_impl.cc > File athena/wm/window_manager_impl.cc (right): > > https://codereview.chromium.org/420603011/diff/1/athena/wm/window_manager_impl.cc#newcode133 > ...
6 years, 4 months ago (2014-07-29 17:15:22 UTC) #13
mfomitchev
https://codereview.chromium.org/420603011/diff/1/athena/wm/bezel_controller.cc File athena/wm/bezel_controller.cc (right): https://codereview.chromium.org/420603011/diff/1/athena/wm/bezel_controller.cc#newcode43 athena/wm/bezel_controller.cc:43: gfx::Point point_in_screen(location.x(), location.y()); On 2014/07/25 23:44:23, Jun Mukai wrote: ...
6 years, 4 months ago (2014-08-05 19:56:57 UTC) #14
Jun Mukai
https://codereview.chromium.org/420603011/diff/1/athena/wm/bezel_controller.cc File athena/wm/bezel_controller.cc (right): https://codereview.chromium.org/420603011/diff/1/athena/wm/bezel_controller.cc#newcode121 athena/wm/bezel_controller.cc:121: SetState(BEZEL_GESTURE_STARTED, kScrollDeltaNone); On 2014/08/05 19:56:57, mfomitchev wrote: > I've ...
6 years, 4 months ago (2014-08-05 21:13:39 UTC) #15
mfomitchev
https://codereview.chromium.org/420603011/diff/160001/athena/wm/bezel_controller.cc File athena/wm/bezel_controller.cc (right): https://codereview.chromium.org/420603011/diff/160001/athena/wm/bezel_controller.cc#newcode46 athena/wm/bezel_controller.cc:46: float BezelController::GetDistance(const gfx::PointF& location, It's private, so I moved ...
6 years, 4 months ago (2014-08-06 18:11:32 UTC) #16
Jun Mukai
https://codereview.chromium.org/420603011/diff/160001/athena/wm/bezel_controller.cc File athena/wm/bezel_controller.cc (right): https://codereview.chromium.org/420603011/diff/160001/athena/wm/bezel_controller.cc#newcode46 athena/wm/bezel_controller.cc:46: float BezelController::GetDistance(const gfx::PointF& location, On 2014/08/06 18:11:32, mfomitchev wrote: ...
6 years, 4 months ago (2014-08-06 19:56:10 UTC) #17
mfomitchev
https://codereview.chromium.org/420603011/diff/160001/athena/wm/window_overview_mode.cc File athena/wm/window_overview_mode.cc (right): https://codereview.chromium.org/420603011/diff/160001/athena/wm/window_overview_mode.cc#newcode196 athena/wm/window_overview_mode.cc:196: shadow->SetContentBounds(gfx::Rect(container_->bounds().size())); It's the split view transform, not the overview ...
6 years, 4 months ago (2014-08-06 20:09:59 UTC) #18
Jun Mukai
lgtm but please wait for the review from oshima https://codereview.chromium.org/420603011/diff/160001/athena/wm/window_overview_mode.cc File athena/wm/window_overview_mode.cc (right): https://codereview.chromium.org/420603011/diff/160001/athena/wm/window_overview_mode.cc#newcode196 athena/wm/window_overview_mode.cc:196: ...
6 years, 4 months ago (2014-08-06 20:49:02 UTC) #19
oshima
https://codereview.chromium.org/420603011/diff/180001/athena/wm/bezel_controller.h File athena/wm/bezel_controller.h (right): https://codereview.chromium.org/420603011/diff/180001/athena/wm/bezel_controller.h#newcode37 athena/wm/bezel_controller.h:37: // Beginning of a bezel scroll gesture started from ...
6 years, 4 months ago (2014-08-06 21:54:10 UTC) #20
sadrul
If I understand correctly, we can do without the MRU tracker for now? (since edge ...
6 years, 4 months ago (2014-08-07 15:26:16 UTC) #21
oshima
On 2014/08/07 15:26:16, sadrul wrote: > If I understand correctly, we can do without the ...
6 years, 4 months ago (2014-08-07 16:53:20 UTC) #22
mfomitchev
I think it's worth keeping MRU tracker around since it's possible the UX will change ...
6 years, 4 months ago (2014-08-07 17:11:10 UTC) #23
oshima
On 2014/08/07 17:11:10, mfomitchev wrote: > I think it's worth keeping MRU tracker around since ...
6 years, 4 months ago (2014-08-07 17:19:24 UTC) #24
oshima
6 years, 4 months ago (2014-08-07 22:42:47 UTC) #25
mfomitchev
https://codereview.chromium.org/420603011/diff/180001/athena/wm/bezel_controller.h File athena/wm/bezel_controller.h (right): https://codereview.chromium.org/420603011/diff/180001/athena/wm/bezel_controller.h#newcode37 athena/wm/bezel_controller.h:37: // Beginning of a bezel scroll gesture started from ...
6 years, 4 months ago (2014-08-08 16:03:23 UTC) #26
oshima
https://codereview.chromium.org/420603011/diff/180001/athena/wm/split_view_controller.cc File athena/wm/split_view_controller.cc (right): https://codereview.chromium.org/420603011/diff/180001/athena/wm/split_view_controller.cc#newcode73 athena/wm/split_view_controller.cc:73: int container_width = container_->GetBoundsInScreen().width(); On 2014/08/08 16:03:22, mfomitchev wrote: ...
6 years, 4 months ago (2014-08-08 16:45:34 UTC) #27
mfomitchev
https://codereview.chromium.org/420603011/diff/180001/athena/wm/split_view_controller.cc File athena/wm/split_view_controller.cc (right): https://codereview.chromium.org/420603011/diff/180001/athena/wm/split_view_controller.cc#newcode73 athena/wm/split_view_controller.cc:73: int container_width = container_->GetBoundsInScreen().width(); Ok. How can I get ...
6 years, 4 months ago (2014-08-08 17:40:51 UTC) #28
oshima
lgtm with nits https://codereview.chromium.org/420603011/diff/180001/athena/wm/split_view_controller.cc File athena/wm/split_view_controller.cc (right): https://codereview.chromium.org/420603011/diff/180001/athena/wm/split_view_controller.cc#newcode73 athena/wm/split_view_controller.cc:73: int container_width = container_->GetBoundsInScreen().width(); On 2014/08/08 ...
6 years, 4 months ago (2014-08-08 18:00:40 UTC) #29
mfomitchev
https://codereview.chromium.org/420603011/diff/220001/athena/wm/public/window_list_provider.h File athena/wm/public/window_list_provider.h (right): https://codereview.chromium.org/420603011/diff/220001/athena/wm/public/window_list_provider.h#newcode21 athena/wm/public/window_list_provider.h:21: } // namespace wm On 2014/08/08 18:00:40, oshima wrote: ...
6 years, 4 months ago (2014-08-08 18:40:28 UTC) #30
mfomitchev1
The CQ bit was checked by mfomitchev@google.com
6 years, 4 months ago (2014-08-08 23:23:23 UTC) #31
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/mfomitchev@chromium.org/420603011/260001
6 years, 4 months ago (2014-08-08 23:26:01 UTC) #32
oshima
https://codereview.chromium.org/420603011/diff/260001/athena/wm/public/window_list_provider.h File athena/wm/public/window_list_provider.h (right): https://codereview.chromium.org/420603011/diff/260001/athena/wm/public/window_list_provider.h#newcode1 athena/wm/public/window_list_provider.h:1: #ifndef ATHENA_WM_PUBLIC_WINDOW_LIST_PROVIDER_H_ you need license comment here. Sorry, I ...
6 years, 4 months ago (2014-08-09 05:07:03 UTC) #33
commit-bot: I haz the power
FYI, CQ is re-trying this CL (attempt #1). The failing builders are: chromium_presubmit on tryserver.chromium.linux ...
6 years, 4 months ago (2014-08-09 08:54:53 UTC) #34
commit-bot: I haz the power
The CQ bit was unchecked by commit-bot@chromium.org
6 years, 4 months ago (2014-08-09 08:57:58 UTC) #35
commit-bot: I haz the power
Try jobs failed on following builders: chromium_presubmit on tryserver.chromium.linux (http://build.chromium.org/p/tryserver.chromium.linux/builders/chromium_presubmit/builds/3144)
6 years, 4 months ago (2014-08-09 08:57:59 UTC) #36
sadrul
Since the CL is out of the CQ anyway, some nits and comments: https://codereview.chromium.org/420603011/diff/260001/athena/wm/public/window_list_provider.h File ...
6 years, 4 months ago (2014-08-09 13:32:40 UTC) #37
mfomitchev
https://codereview.chromium.org/420603011/diff/260001/athena/wm/public/window_list_provider.h File athena/wm/public/window_list_provider.h (right): https://codereview.chromium.org/420603011/diff/260001/athena/wm/public/window_list_provider.h#newcode1 athena/wm/public/window_list_provider.h:1: #ifndef ATHENA_WM_PUBLIC_WINDOW_LIST_PROVIDER_H_ On 2014/08/09 05:07:03, oshima wrote: > you ...
6 years, 4 months ago (2014-08-09 18:29:56 UTC) #38
mfomitchev
The CQ bit was checked by mfomitchev@chromium.org
6 years, 4 months ago (2014-08-09 18:30:16 UTC) #39
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/mfomitchev@chromium.org/420603011/280001
6 years, 4 months ago (2014-08-09 18:30:42 UTC) #40
commit-bot: I haz the power
Change committed as 288593
6 years, 4 months ago (2014-08-09 20:40:10 UTC) #41
please use gerrit instead
6 years, 4 months ago (2014-08-10 01:12:41 UTC) #42
Message was sent while issue was closed.
A revert of this CL has been created in
https://codereview.chromium.org/451363002/ by rouslan@chromium.org.

The reason for reverting is: Appears to have broken Linux Chromium OS ASan LSan
Tests (3) (stats):
http://build.chromium.org/p/chromium.memory/builders/Linux%20Chromium%20OS%20...

athena_unittests failed 13
Basic
Accelerators
AppSelection
BasicTransition
VirtualKeyboardTransition
Basic
CreateContainer
GrabAndMouseCapture
GrabInputContainer
GrabShouldNotBlockVirtualKeyboard
NonActivatableContainer
Zorder
Empty

[ RUN      ] ActivityManagerTest.Basic
=================================================================
==8808==ERROR: AddressSanitizer: heap-use-after-free on address 0x60200000ad70
at pc 0x00000054eebe bp 0x7fff975aaa70 sp 0x7fff975aaa68
READ of size 8 at 0x60200000ad70 thread T0
#0 0x54eebd in __find<__gnu_cxx::__normal_iterator<athena::WindowManagerObserver
**, std::vector<athena::WindowManagerObserver *,
std::allocator<athena::WindowManagerObserver *> > >,
athena::WindowManagerObserver *>
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/stl_algo.h:190:8
#1 0x54eebd in find<__gnu_cxx::__normal_iterator<athena::WindowManagerObserver
**, std::vector<athena::WindowManagerObserver *,
std::allocator<athena::WindowManagerObserver *> > >,
athena::WindowManagerObserver *>
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/stl_algo.h:4402
#2 0x54eebd in
ObserverListBase<athena::WindowManagerObserver>::RemoveObserver(athena::WindowManagerObserver*)
base/observer_list.h:168
#3 0x560f79 in ~SplitViewController athena/wm/split_view_controller.cc:63:3
#4 0x560f79 in athena::SplitViewController::~SplitViewController()
athena/wm/split_view_controller.cc:62
#5 0x54d340 in operator() base/memory/scoped_ptr.h:137:5
#6 0x54d340 in ~scoped_ptr_impl base/memory/scoped_ptr.h:220
#7 0x54d340 in ~scoped_ptr base/memory/scoped_ptr.h:432
#8 0x54d340 in athena::(anonymous
namespace)::WindowManagerImpl::~WindowManagerImpl()
athena/wm/window_manager_impl.cc:124
#9 0x54d57d in athena::(anonymous
namespace)::WindowManagerImpl::~WindowManagerImpl()
athena/wm/window_manager_impl.cc:116:41
#10 0x567127 in athena::ShutdownAthena() athena/main/athena_launcher.cc:86:3
#11 0x5657af in athena::test::AthenaTestHelper::TearDown()
athena/test/athena_test_helper.cc:98:3
#12 0x5645b6 in athena::test::AthenaTestBase::TearDown()
athena/test/athena_test_base.cc:51:3
#13 0x4fc938 in testing::TestInfo::Run() testing/gtest/src/gtest.cc:2610:5
#14 0x4fd676 in testing::TestCase::Run() testing/gtest/src/gtest.cc:2728:5
#15 0x5138f5 in testing::internal::UnitTestImpl::RunAllTests()
testing/gtest/src/gtest.cc:4591:11
#16 0x512ee6 in
HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>
testing/gtest/src/gtest.cc:2418:12
#17 0x512ee6 in testing::UnitTest::Run() testing/gtest/src/gtest.cc:4209
#18 0x1602b74 in RUN_ALL_TESTS testing/gtest/include/gtest/gtest.h:2304:10
#19 0x1602b74 in base::TestSuite::Run() base/test/test_suite.cc:227
#20 0x15fa231 in Run base/callback.h:401:12
#21 0x15fa231 in base::(anonymous
namespace)::LaunchUnitTestsInternal(base::Callback<int ()> const&, int, bool,
base::Callback<void ()> const&) base/test/launcher/unit_test_launcher.cc:498
#22 0x15faf7e in base::LaunchUnitTestsSerially(int, char**, base::Callback<int
()> const&) base/test/launcher/unit_test_launcher.cc:564:10
#23 0x4d74ca in main athena/test/athena_unittests.cc:51:10
#24 0x7f9020d2d76c in __libc_start_main
/build/buildd/eglibc-2.15/csu/libc-start.c:226
#25 0x4d726c in _start
(/mnt/data/b/build/slave/Linux_Chromium_OS_ASan_LSan_Tests__3_/build/src/out/Release/athena_unittests+0x4d726c)

Please follow instructions on how to setup ASan on your workstation here:
http://www.chromium.org/developers/testing/addresssanitizer
LSan may also be of use:
http://www.chromium.org/developers/testing/leaksanitizer
You may also want run your patch through the linux_lsan try bot..

Powered by Google App Engine
This is Rietveld 408576698