1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/apps/app_browsertest_util.h" 6 #include "chrome/browser/extensions/extension_test_message_listener.h" 7 #include "chrome/browser/ui/extensions/application_launch.h" 8 #include "chrome/test/base/interactive_test_utils.h" 9 10 class ExtensionPointerLockTest : public extensions::PlatformAppBrowserTest { 11 public: RunExtensionPointerLockTest(const char * app_path)12 bool RunExtensionPointerLockTest(const char* app_path) { 13 ExtensionTestMessageListener launched_listener("Launched", true); 14 LoadAndLaunchPlatformApp(app_path, &launched_listener); 15 16 ResultCatcher catcher; 17 18 if (!ui_test_utils::ShowAndFocusNativeWindow( 19 GetFirstAppWindow()->GetNativeWindow())) { 20 message_ = "Can't focus window"; 21 return false; 22 } 23 24 launched_listener.Reply(""); 25 26 if (!catcher.GetNextResult()) { 27 message_ = catcher.message(); 28 return false; 29 } 30 31 return true; 32 } 33 }; 34 IN_PROC_BROWSER_TEST_F(ExtensionPointerLockTest,ExtensionPointerLockAccessFail)35IN_PROC_BROWSER_TEST_F(ExtensionPointerLockTest, 36 ExtensionPointerLockAccessFail) { 37 // Test that pointer lock cannot be accessed from an extension without 38 // permission. 39 ASSERT_TRUE(RunExtensionPointerLockTest("pointer_lock/no_permission")) 40 << message_; 41 } 42 IN_PROC_BROWSER_TEST_F(ExtensionPointerLockTest,ExtensionPointerLockAccessPass)43IN_PROC_BROWSER_TEST_F(ExtensionPointerLockTest, 44 ExtensionPointerLockAccessPass) { 45 // Test that pointer lock can be accessed from an extension with permission. 46 ASSERT_TRUE(RunExtensionPointerLockTest("pointer_lock/has_permission")) 47 << message_; 48 } 49