summaryrefslogtreecommitdiffstats
path: root/win8
diff options
context:
space:
mode:
authorcpu@chromium.org <cpu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-05 21:47:33 +0000
committercpu@chromium.org <cpu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-05 21:47:33 +0000
commit8f05ceaab534c9e0fd354e34b61e70ac48888e2c (patch)
treed8430a5bf076b96b6bc087a3d7f457bdef251a76 /win8
parentdb84517c5e965d72adb9ce8edaf89a229f3f59fa (diff)
downloadchromium_src-8f05ceaab534c9e0fd354e34b61e70ac48888e2c.zip
chromium_src-8f05ceaab534c9e0fd354e34b61e70ac48888e2c.tar.gz
chromium_src-8f05ceaab534c9e0fd354e34b61e70ac48888e2c.tar.bz2
In-chorme viewer for metro (part 2)
- Wires metro mouse move, mouse click to aura viewer - Introduces a new RootWindowHost, one that is remote BUG=151718 TEST=see bug Review URL: https://codereview.chromium.org/11047012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@160489 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'win8')
-rw-r--r--win8/metro_driver/chrome_app_view.h20
-rw-r--r--win8/metro_driver/devices_handler.cc33
-rw-r--r--win8/metro_driver/devices_handler.h18
-rw-r--r--win8/metro_driver/stdafx.h1
4 files changed, 72 insertions, 0 deletions
diff --git a/win8/metro_driver/chrome_app_view.h b/win8/metro_driver/chrome_app_view.h
index cca7864..f9d8f90 100644
--- a/win8/metro_driver/chrome_app_view.h
+++ b/win8/metro_driver/chrome_app_view.h
@@ -25,6 +25,11 @@
#include "win8/metro_driver/settings_handler.h"
#include "win8/metro_driver/toast_notification_handler.h"
+namespace IPC {
+ class Listener;
+ class ChannelProxy;
+}
+
class ChromeAppView
: public mswr::RuntimeClass<winapp::Core::IFrameworkView> {
public:
@@ -77,6 +82,15 @@ class ChromeAppView
HRESULT OnSizeChanged(winui::Core::ICoreWindow* sender,
winui::Core::IWindowSizeChangedEventArgs* args);
+ HRESULT OnPointerMoved(winui::Core::ICoreWindow* sender,
+ winui::Core::IPointerEventArgs* args);
+
+ HRESULT OnPointerPressed(winui::Core::ICoreWindow* sender,
+ winui::Core::IPointerEventArgs* args);
+
+ HRESULT OnPointerReleased(winui::Core::ICoreWindow* sender,
+ winui::Core::IPointerEventArgs* args);
+
HRESULT OnEdgeGestureCompleted(winui::Input::IEdgeGesture* gesture,
winui::Input::IEdgeGestureEventArgs* args);
@@ -110,6 +124,9 @@ class ChromeAppView
EventRegistrationToken input_pane_visible_token_;
EventRegistrationToken input_pane_hiding_token_;
EventRegistrationToken app_exit_token_;
+ EventRegistrationToken pointermoved_token_;
+ EventRegistrationToken pointerpressed_token_;
+ EventRegistrationToken pointerreleased_token_;
ChromeUrlLaunchHandler url_launch_handler_;
metro_driver::DevicesHandler devices_handler_;
@@ -135,6 +152,9 @@ class ChromeAppView
MetroDialogBox dialog_box_;
metro_driver::Direct3DHelper direct3d_helper_;
+
+ IPC::Listener* ui_channel_listener_;
+ IPC::ChannelProxy* ui_channel_;
};
class ChromeAppViewFactory
diff --git a/win8/metro_driver/devices_handler.cc b/win8/metro_driver/devices_handler.cc
index 20fd413..9175885 100644
--- a/win8/metro_driver/devices_handler.cc
+++ b/win8/metro_driver/devices_handler.cc
@@ -20,4 +20,37 @@ HRESULT DevicesHandler::Initialize(winui::Core::ICoreWindow* window) {
return hr;
}
+PointerEventHandler::PointerEventHandler() {
+}
+
+PointerEventHandler::~PointerEventHandler() {
+}
+
+HRESULT PointerEventHandler::Init(winui::Core::IPointerEventArgs* args) {
+ mswr::ComPtr<winui::Input::IPointerPoint> pointer_point;
+ HRESULT hr = args->get_CurrentPoint(&pointer_point);
+ if (FAILED(hr))
+ return hr;
+
+ mswr::ComPtr<windevs::Input::IPointerDevice> pointer_device;
+ hr = pointer_point->get_PointerDevice(&pointer_device);
+ if (FAILED(hr))
+ return hr;
+
+ windevs::Input::PointerDeviceType device_type;
+ hr = pointer_device->get_PointerDeviceType(&device_type);
+ if (FAILED(hr))
+ return hr;
+
+ is_mouse_ = (device_type == windevs::Input::PointerDeviceType_Mouse);
+ winfoundtn::Point point;
+ hr = pointer_point->get_Position(&point);
+ if (FAILED(hr))
+ return hr;
+
+ x_ = point.X;
+ y_ = point.Y;
+ return S_OK;
+}
+
} // namespace metro_driver
diff --git a/win8/metro_driver/devices_handler.h b/win8/metro_driver/devices_handler.h
index fdb2226..c3623b0 100644
--- a/win8/metro_driver/devices_handler.h
+++ b/win8/metro_driver/devices_handler.h
@@ -26,6 +26,24 @@ class DevicesHandler {
DISALLOW_COPY_AND_ASSIGN(DevicesHandler);
};
+// This class helps decoding the pointer properties of an event.
+class PointerEventHandler {
+ public:
+ PointerEventHandler();
+ ~PointerEventHandler();
+
+ HRESULT Init(winui::Core::IPointerEventArgs* args);
+
+ bool is_mouse() const { return is_mouse_; }
+ int x() const { return x_; }
+ int y() const { return y_; }
+
+ private:
+ int x_;
+ int y_;
+ bool is_mouse_;
+};
+
} // namespace metro_driver
#endif // CHROME_BROWSER_UI_METRO_DRIVER_DEVICES_HANDLER_H_
diff --git a/win8/metro_driver/stdafx.h b/win8/metro_driver/stdafx.h
index d8c1a01..8373c3c 100644
--- a/win8/metro_driver/stdafx.h
+++ b/win8/metro_driver/stdafx.h
@@ -27,6 +27,7 @@ namespace mswr = Microsoft::WRL;
namespace mswrw = Microsoft::WRL::Wrappers;
namespace winapp = ABI::Windows::ApplicationModel;
namespace windata = ABI::Windows::Data;
+namespace windevs = ABI::Windows::Devices;
namespace winfoundtn = ABI::Windows::Foundation;
namespace wingfx = ABI::Windows::Graphics;
namespace winui = ABI::Windows::UI;