input_view_browsertest.cc revision 46d4c2bc3267f3f028f39e7e311b0f89aba2e4fd
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 3// found in the LICENSE file. 4 5#include "ash/shell.h" 6#include "base/files/file_path.h" 7#include "chrome/browser/chromeos/extensions/virtual_keyboard_browsertest.h" 8#include "chrome/browser/extensions/crx_installer.h" 9#include "chrome/browser/extensions/extension_service.h" 10#include "chrome/browser/extensions/extension_test_notification_observer.h" 11#include "chrome/browser/profiles/profile.h" 12#include "chrome/browser/ui/browser.h" 13#include "chrome/test/base/ui_test_utils.h" 14#include "chromeos/ime/extension_ime_util.h" 15#include "chromeos/ime/input_method_manager.h" 16#include "content/public/browser/render_view_host.h" 17#include "content/public/browser/site_instance.h" 18#include "content/public/browser/web_contents.h" 19#include "content/public/common/url_constants.h" 20#include "content/public/test/browser_test_utils.h" 21#include "extensions/common/constants.h" 22#include "extensions/common/extension.h" 23#include "extensions/common/file_util.h" 24#include "ui/aura/client/aura_constants.h" 25#include "ui/base/ime/input_method.h" 26 27namespace { 28 29const base::FilePath::CharType kExtensionName[] = "GoogleKeyboardInput-xkb.crx"; 30 31const base::FilePath::CharType kInputViewTestDir[] = 32 "chromeos/virtual_keyboard/inputview/"; 33const base::FilePath::CharType kBaseKeyboardTestFramework[] = "test_base.js"; 34 35const char kDefaultLayout[] = "us"; 36const char kCompactLayout[] = "us.compact.qwerty"; 37 38struct InputViewConfig : public VirtualKeyboardBrowserTestConfig { 39 explicit InputViewConfig(std::string id, std::string layout) { 40 base_framework_ = kBaseKeyboardTestFramework; 41 extension_id_ = id; 42 test_dir_ = kInputViewTestDir; 43 url_ = std::string(extensions::kExtensionScheme) + 44 url::kStandardSchemeSeparator + id + "/inputview.html?id=" + 45 layout; 46 } 47}; 48 49} // namespace 50 51class InputViewBrowserTest : public VirtualKeyboardBrowserTest { 52 public: 53 // Installs the IME Extension keyboard |kExtensionName|. 54 std::string InstallIMEExtension() { 55 // Loads extension. 56 base::FilePath path = ui_test_utils::GetTestFilePath( 57 base::FilePath(kInputViewTestDir), base::FilePath(kExtensionName)); 58 ExtensionService* service = browser()->profile()->GetExtensionService(); 59 scoped_refptr<extensions::CrxInstaller> installer = 60 extensions::CrxInstaller::CreateSilent(service); 61 62 ExtensionTestNotificationObserver observer(browser()); 63 observer.Watch(chrome::NOTIFICATION_CRX_INSTALLER_DONE, 64 content::Source<extensions::CrxInstaller>(installer.get())); 65 installer->set_allow_silent_install(true); 66 installer->set_creation_flags(extensions::Extension::FROM_WEBSTORE); 67 installer->InstallCrx(path); 68 // Wait for CRX to be installed. 69 observer.Wait(); 70 std::string extensionId = installer->extension()->id(); 71 if (!service->GetExtensionById(extensionId, false)) 72 return ""; 73 return extensionId; 74 } 75}; 76 77// Disabled for leaking memory: http://crbug.com/380537 78IN_PROC_BROWSER_TEST_F(InputViewBrowserTest, DISABLED_TypingTest) { 79 std::string id = InstallIMEExtension(); 80 ASSERT_FALSE(id.empty()); 81 RunTest(base::FilePath("typing_test.js"), 82 InputViewConfig(id, kDefaultLayout)); 83} 84 85// Disabled for leaking memory: http://crbug.com/380537 86IN_PROC_BROWSER_TEST_F(InputViewBrowserTest, DISABLED_CompactTypingTest) { 87 std::string id = InstallIMEExtension(); 88 ASSERT_FALSE(id.empty()); 89 RunTest(base::FilePath("typing_test.js"), 90 InputViewConfig(id, kCompactLayout)); 91} 92 93// Disabled for leaking memory: http://crbug.com/380537 94IN_PROC_BROWSER_TEST_F(InputViewBrowserTest, DISABLED_KeysetTransitionTest) { 95 std::string id = InstallIMEExtension(); 96 ASSERT_FALSE(id.empty()); 97 RunTest(base::FilePath("keyset_transition_test.js"), 98 InputViewConfig(id, kDefaultLayout)); 99} 100 101// Disabled for leaking memory: http://crbug.com/380537 102IN_PROC_BROWSER_TEST_F(InputViewBrowserTest, 103 DISABLED_CompactKeysetTransitionTest) { 104 std::string id = InstallIMEExtension(); 105 ASSERT_FALSE(id.empty()); 106 RunTest(base::FilePath("keyset_transition_test.js"), 107 InputViewConfig(id, kCompactLayout)); 108} 109