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

Side by Side Diff: components/mus/public/cpp/lib/window_tree_client.cc

Issue 1939133002: StructTraits to map mus::mojom::Event to unique_ptr<ui::Event> (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed feedback. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/mus/public/cpp/window_tree_client.h" 5 #include "components/mus/public/cpp/window_tree_client.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 856 matching lines...) Expand 10 before | Expand all | Expand 10 after
867 return; 867 return;
868 868
869 InFlightPropertyChange new_change(window, name, new_data); 869 InFlightPropertyChange new_change(window, name, new_data);
870 if (ApplyServerChangeToExistingInFlightChange(new_change)) 870 if (ApplyServerChangeToExistingInFlightChange(new_change))
871 return; 871 return;
872 872
873 WindowPrivate(window).LocalSetSharedProperty(name, std::move(new_data)); 873 WindowPrivate(window).LocalSetSharedProperty(name, std::move(new_data));
874 } 874 }
875 875
876 void WindowTreeClient::OnWindowInputEvent(uint32_t event_id, 876 void WindowTreeClient::OnWindowInputEvent(uint32_t event_id,
877 Id window_id, 877 Id window_id,
878 mojom::EventPtr event, 878 std::unique_ptr<ui::Event> event,
879 uint32_t event_observer_id) { 879 uint32_t event_observer_id) {
880 std::unique_ptr<ui::Event> ui_event = event.To<std::unique_ptr<ui::Event>>(); 880 DCHECK(event);
881 Window* window = GetWindowByServerId(window_id); // May be null. 881 Window* window = GetWindowByServerId(window_id); // May be null.
882 882
883 // Non-zero event_observer_id means it matched an event observer on the 883 // Non-zero event_observer_id means it matched an event observer on the
884 // server. 884 // server.
885 if (event_observer_id != 0 && has_event_observer_ && 885 if (event_observer_id != 0 && has_event_observer_ &&
886 event_observer_id == event_observer_id_) 886 event_observer_id == event_observer_id_)
887 delegate_->OnEventObserved(*ui_event, window); 887 delegate_->OnEventObserved(*event.get(), window);
888 888
889 if (!window || !window->input_event_handler_) { 889 if (!window || !window->input_event_handler_) {
890 tree_->OnWindowInputEventAck(event_id, mojom::EventResult::UNHANDLED); 890 tree_->OnWindowInputEventAck(event_id, mojom::EventResult::UNHANDLED);
891 return; 891 return;
892 } 892 }
893 893
894 std::unique_ptr<base::Callback<void(mojom::EventResult)>> ack_callback( 894 std::unique_ptr<base::Callback<void(mojom::EventResult)>> ack_callback(
895 new base::Callback<void(mojom::EventResult)>( 895 new base::Callback<void(mojom::EventResult)>(
896 base::Bind(&mojom::WindowTree::OnWindowInputEventAck, 896 base::Bind(&mojom::WindowTree::OnWindowInputEventAck,
897 base::Unretained(tree_), event_id))); 897 base::Unretained(tree_), event_id)));
898 window->input_event_handler_->OnWindowInputEvent( 898
899 window, *event.To<std::unique_ptr<ui::Event>>().get(), &ack_callback); 899 // TODO(moshayedi): crbug.com/617222. No need to convert to ui::MouseEvent or
900 // ui::TouchEvent once we have proper support for pointer events.
901 if (event->IsMousePointerEvent()) {
902 window->input_event_handler_->OnWindowInputEvent(
903 window, ui::MouseEvent(*event->AsPointerEvent()), &ack_callback);
904 } else if (event->IsTouchPointerEvent()) {
905 window->input_event_handler_->OnWindowInputEvent(
906 window, ui::TouchEvent(*event->AsPointerEvent()), &ack_callback);
907 } else {
908 window->input_event_handler_->OnWindowInputEvent(window, *event.get(),
909 &ack_callback);
910 }
900 911
901 // The handler did not take ownership of the callback, so we send the ack, 912 // The handler did not take ownership of the callback, so we send the ack,
902 // marking the event as not consumed. 913 // marking the event as not consumed.
903 if (ack_callback) 914 if (ack_callback)
904 ack_callback->Run(mojom::EventResult::UNHANDLED); 915 ack_callback->Run(mojom::EventResult::UNHANDLED);
905 } 916 }
906 917
907 void WindowTreeClient::OnEventObserved(mojom::EventPtr event, 918 void WindowTreeClient::OnEventObserved(std::unique_ptr<ui::Event> event,
908 uint32_t event_observer_id) { 919 uint32_t event_observer_id) {
909 if (has_event_observer_ && event_observer_id == event_observer_id_) { 920 DCHECK(event);
910 std::unique_ptr<ui::Event> ui_event = 921 if (has_event_observer_ && event_observer_id == event_observer_id_)
911 event.To<std::unique_ptr<ui::Event>>(); 922 delegate_->OnEventObserved(*event.get(), nullptr /* target */);
912 delegate_->OnEventObserved(*ui_event, nullptr /* target */);
913 }
914 } 923 }
915 924
916 void WindowTreeClient::OnWindowFocused(Id focused_window_id) { 925 void WindowTreeClient::OnWindowFocused(Id focused_window_id) {
917 Window* focused_window = GetWindowByServerId(focused_window_id); 926 Window* focused_window = GetWindowByServerId(focused_window_id);
918 InFlightFocusChange new_change(this, focused_window); 927 InFlightFocusChange new_change(this, focused_window);
919 if (ApplyServerChangeToExistingInFlightChange(new_change)) 928 if (ApplyServerChangeToExistingInFlightChange(new_change))
920 return; 929 return;
921 930
922 LocalSetFocus(focused_window); 931 LocalSetFocus(focused_window);
923 } 932 }
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
1032 void WindowTreeClient::WmClientJankinessChanged(ClientSpecificId client_id, 1041 void WindowTreeClient::WmClientJankinessChanged(ClientSpecificId client_id,
1033 bool janky) { 1042 bool janky) {
1034 if (window_manager_delegate_) { 1043 if (window_manager_delegate_) {
1035 auto it = embedded_windows_.find(client_id); 1044 auto it = embedded_windows_.find(client_id);
1036 CHECK(it != embedded_windows_.end()); 1045 CHECK(it != embedded_windows_.end());
1037 window_manager_delegate_->OnWmClientJankinessChanged( 1046 window_manager_delegate_->OnWmClientJankinessChanged(
1038 embedded_windows_[client_id], janky); 1047 embedded_windows_[client_id], janky);
1039 } 1048 }
1040 } 1049 }
1041 1050
1042 void WindowTreeClient::OnAccelerator(uint32_t id, mojom::EventPtr event) { 1051 void WindowTreeClient::OnAccelerator(uint32_t id,
1043 window_manager_delegate_->OnAccelerator( 1052 std::unique_ptr<ui::Event> event) {
1044 id, *event.To<std::unique_ptr<ui::Event>>().get()); 1053 DCHECK(event);
1054 window_manager_delegate_->OnAccelerator(id, *event.get());
1045 } 1055 }
1046 1056
1047 void WindowTreeClient::SetFrameDecorationValues( 1057 void WindowTreeClient::SetFrameDecorationValues(
1048 mojom::FrameDecorationValuesPtr values) { 1058 mojom::FrameDecorationValuesPtr values) {
1049 if (window_manager_internal_client_) { 1059 if (window_manager_internal_client_) {
1050 window_manager_internal_client_->WmSetFrameDecorationValues( 1060 window_manager_internal_client_->WmSetFrameDecorationValues(
1051 std::move(values)); 1061 std::move(values));
1052 } 1062 }
1053 } 1063 }
1054 1064
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1093 Window* window, 1103 Window* window,
1094 const gfx::Vector2d& offset, 1104 const gfx::Vector2d& offset,
1095 const gfx::Insets& hit_area) { 1105 const gfx::Insets& hit_area) {
1096 if (window_manager_internal_client_) { 1106 if (window_manager_internal_client_) {
1097 window_manager_internal_client_->SetUnderlaySurfaceOffsetAndExtendedHitArea( 1107 window_manager_internal_client_->SetUnderlaySurfaceOffsetAndExtendedHitArea(
1098 server_id(window), offset.x(), offset.y(), hit_area); 1108 server_id(window), offset.x(), offset.y(), hit_area);
1099 } 1109 }
1100 } 1110 }
1101 1111
1102 } // namespace mus 1112 } // namespace mus
OLDNEW
« no previous file with comments | « ash/mus/window_manager_application.cc ('k') | components/mus/public/cpp/tests/window_tree_client_private.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698