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

Unified Diff: ppapi/tests/test_mouse_lock.cc

Issue 10699045: Fix PPB_MouseLock.LockMouse crash and add tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ppapi/tests/test_mouse_lock.h ('k') | ppapi/thunk/enter.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ppapi/tests/test_mouse_lock.cc
===================================================================
--- ppapi/tests/test_mouse_lock.cc (revision 0)
+++ ppapi/tests/test_mouse_lock.cc (revision 0)
@@ -0,0 +1,79 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ppapi/tests/test_mouse_lock.h"
+
+#include "ppapi/cpp/input_event.h"
+#include "ppapi/cpp/view.h"
+#include "ppapi/tests/testing_instance.h"
+
+REGISTER_TEST_CASE(MouseLock);
+
+TestMouseLock::TestMouseLock(TestingInstance* instance)
+ : TestCase(instance),
+ MouseLock(instance),
+ nested_event_(instance->pp_instance()) {
+}
+
+TestMouseLock::~TestMouseLock() {
+}
+
+bool TestMouseLock::Init() {
+ return CheckTestingInterface();
+}
+
+void TestMouseLock::RunTests(const std::string& filter) {
+ RUN_TEST(SucceedWhenAllowed, filter);
+ RUN_TEST(FailWhenBlocked, filter);
+}
+
+void TestMouseLock::DidChangeView(const pp::View& view) {
+ position_ = view.GetRect();
+}
+
+void TestMouseLock::MouseLockLost() {
+ nested_event_.Signal();
+}
+
+std::string TestMouseLock::TestSucceedWhenAllowed() {
+ // Content settings are configured to allow mouse lock for any site.
+ // Please see chrome/test/ppapi/ppapi_interactive_browsertest.cc.
+ TestCompletionCallback callback(instance_->pp_instance(), callback_type());
+ SimulateUserGesture();
+ callback.WaitForResult(LockMouse(callback));
+ ASSERT_EQ(PP_OK, callback.result());
+
+ UnlockMouse();
+ // Wait for the MouseLockLost() call.
+ nested_event_.Wait();
+
+ PASS();
+}
+
+std::string TestMouseLock::TestFailWhenBlocked() {
+ // Content settings are configured to block mouse lock for any site.
+ // Please see chrome/test/ppapi/ppapi_interactive_browsertest.cc.
+ TestCompletionCallback callback(instance_->pp_instance(), callback_type());
+ SimulateUserGesture();
+ callback.WaitForResult(LockMouse(callback));
+ ASSERT_NE(PP_OK, callback.result());
+
+ PASS();
+}
+
+void TestMouseLock::SimulateUserGesture() {
+ pp::Point mouse_movement;
+ pp::MouseInputEvent input_event(
+ instance_,
+ PP_INPUTEVENT_TYPE_MOUSEDOWN,
+ 0, // time_stamp
+ 0, // modifiers
+ PP_INPUTEVENT_MOUSEBUTTON_LEFT,
+ position_.CenterPoint(),
+ 1, // click_count
+ mouse_movement);
+
+ testing_interface_->SimulateInputEvent(instance_->pp_instance(),
+ input_event.pp_resource());
+}
Property changes on: ppapi/tests/test_mouse_lock.cc
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « ppapi/tests/test_mouse_lock.h ('k') | ppapi/thunk/enter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698