| // Copyright 2013 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 "chrome/browser/apps/app_browsertest_util.h" |
| #include "chrome/browser/extensions/extension_test_message_listener.h" |
| #include "chrome/browser/ui/extensions/application_launch.h" |
| #include "chrome/test/base/interactive_test_utils.h" |
| |
| class ExtensionPointerLockTest : public extensions::PlatformAppBrowserTest { |
| public: |
| bool RunExtensionPointerLockTest(const char* app_path) { |
| ExtensionTestMessageListener launched_listener("Launched", true); |
| LoadAndLaunchPlatformApp(app_path, &launched_listener); |
| |
| ResultCatcher catcher; |
| |
| if (!ui_test_utils::ShowAndFocusNativeWindow( |
| GetFirstAppWindow()->GetNativeWindow())) { |
| message_ = "Can't focus window"; |
| return false; |
| } |
| |
| launched_listener.Reply(""); |
| |
| if (!catcher.GetNextResult()) { |
| message_ = catcher.message(); |
| return false; |
| } |
| |
| return true; |
| } |
| }; |
| |
| IN_PROC_BROWSER_TEST_F(ExtensionPointerLockTest, |
| ExtensionPointerLockAccessFail) { |
| // Test that pointer lock cannot be accessed from an extension without |
| // permission. |
| ASSERT_TRUE(RunExtensionPointerLockTest("pointer_lock/no_permission")) |
| << message_; |
| } |
| |
| IN_PROC_BROWSER_TEST_F(ExtensionPointerLockTest, |
| ExtensionPointerLockAccessPass) { |
| // Test that pointer lock can be accessed from an extension with permission. |
| ASSERT_TRUE(RunExtensionPointerLockTest("pointer_lock/has_permission")) |
| << message_; |
| } |