Commit cedf185f authored by Steven Bennetts's avatar Steven Bennetts Committed by Commit Bot

keyboard_util: Remove flag/switch wrappers

This CL moves some common flag/switch wrappers into the callers to
remove unnecessary dependencies on keyboard_util.h. With the upcoming
Chrome/Ash separation, the wrappers cause more confusion than they
improve readability.

This CL also moves some keyboard_util.cc code only used in
KeyboardController to that class.

Bug: 843332
Change-Id: I042928bebfe4f9ea93ccb4fb7a24f8fc46f555cf
Reviewed-on: https://chromium-review.googlesource.com/1226191
Commit-Queue: Steven Bennetts <stevenjb@chromium.org>
Reviewed-by: default avatarDarren Shen <shend@chromium.org>
Reviewed-by: default avatarShu Chen <shuchen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#592545}
parent 7c63f2e2
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <memory> #include <memory>
#include <utility> #include <utility>
#include "base/feature_list.h"
#include "base/macros.h" #include "base/macros.h"
#include "chrome/browser/chromeos/input_method/input_method_engine.h" #include "chrome/browser/chromeos/input_method/input_method_engine.h"
#include "chrome/browser/chromeos/login/lock/screen_locker.h" #include "chrome/browser/chromeos/login/lock/screen_locker.h"
...@@ -24,8 +25,8 @@ ...@@ -24,8 +25,8 @@
#include "ui/base/ime/chromeos/extension_ime_util.h" #include "ui/base/ime/chromeos/extension_ime_util.h"
#include "ui/base/ime/chromeos/input_method_manager.h" #include "ui/base/ime/chromeos/input_method_manager.h"
#include "ui/base/ime/ime_engine_handler_interface.h" #include "ui/base/ime/ime_engine_handler_interface.h"
#include "ui/base/ui_base_features.h"
#include "ui/keyboard/keyboard_controller.h" #include "ui/keyboard/keyboard_controller.h"
#include "ui/keyboard/keyboard_util.h"
namespace input_ime = extensions::api::input_ime; namespace input_ime = extensions::api::input_ime;
namespace input_method_private = extensions::api::input_method_private; namespace input_method_private = extensions::api::input_method_private;
...@@ -203,7 +204,7 @@ class ImeObserverChromeOS : public ui::ImeObserver { ...@@ -203,7 +204,7 @@ class ImeObserverChromeOS : public ui::ImeObserver {
// event is only for ChromeOS and contains additional information about pen // event is only for ChromeOS and contains additional information about pen
// inputs. We ensure that we only trigger one OnFocus event. // inputs. We ensure that we only trigger one OnFocus event.
if (HasListener(input_method_private::OnFocus::kEventName) && if (HasListener(input_method_private::OnFocus::kEventName) &&
keyboard::IsStylusVirtualKeyboardEnabled()) { base::FeatureList::IsEnabled(features::kEnableStylusVirtualKeyboard)) {
input_method_private::InputContext input_context; input_method_private::InputContext input_context;
input_context.context_id = context.id; input_context.context_id = context.id;
input_context.type = input_method_private::ParseInputContextType( input_context.type = input_method_private::ParseInputContextType(
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "ash/shell.h" #include "ash/shell.h"
#include "base/bind.h" #include "base/bind.h"
#include "base/command_line.h" #include "base/command_line.h"
#include "base/feature_list.h"
#include "base/metrics/histogram_macros.h" #include "base/metrics/histogram_macros.h"
#include "base/metrics/user_metrics.h" #include "base/metrics/user_metrics.h"
#include "base/metrics/user_metrics_action.h" #include "base/metrics/user_metrics_action.h"
...@@ -20,6 +21,7 @@ ...@@ -20,6 +21,7 @@
#include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/chrome_pages.h" #include "chrome/browser/ui/chrome_pages.h"
#include "chrome/common/url_constants.h" #include "chrome/common/url_constants.h"
#include "chromeos/chromeos_features.h"
#include "components/user_manager/user_manager.h" #include "components/user_manager/user_manager.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "content/public/common/service_manager_connection.h" #include "content/public/common/service_manager_connection.h"
...@@ -30,6 +32,7 @@ ...@@ -30,6 +32,7 @@
#include "services/audio/public/cpp/audio_system_factory.h" #include "services/audio/public/cpp/audio_system_factory.h"
#include "services/service_manager/public/cpp/connector.h" #include "services/service_manager/public/cpp/connector.h"
#include "ui/aura/window_tree_host.h" #include "ui/aura/window_tree_host.h"
#include "ui/base/ui_base_features.h"
#include "ui/keyboard/keyboard_controller.h" #include "ui/keyboard/keyboard_controller.h"
#include "ui/keyboard/keyboard_switches.h" #include "ui/keyboard/keyboard_switches.h"
#include "ui/keyboard/keyboard_util.h" #include "ui/keyboard/keyboard_util.h"
...@@ -269,18 +272,24 @@ void ChromeVirtualKeyboardDelegate::OnHasInputDevices( ...@@ -269,18 +272,24 @@ void ChromeVirtualKeyboardDelegate::OnHasInputDevices(
// TODO(blakeo): once the old flag's usages have been removed from the // TODO(blakeo): once the old flag's usages have been removed from the
// extension and all pushes have settled, remove this overly verbose comment. // extension and all pushes have settled, remove this overly verbose comment.
features->AppendString(GenerateFeatureFlag( features->AppendString(GenerateFeatureFlag(
"floatingkeyboard", keyboard::IsFloatingVirtualKeyboardEnabled())); "floatingkeyboard",
features->AppendString( base::FeatureList::IsEnabled(features::kEnableFloatingVirtualKeyboard)));
GenerateFeatureFlag("gesturetyping", keyboard::IsGestureTypingEnabled())); features->AppendString(GenerateFeatureFlag(
"gesturetyping", !base::CommandLine::ForCurrentProcess()->HasSwitch(
keyboard::switches::kDisableGestureTyping)));
features->AppendString(GenerateFeatureFlag( features->AppendString(GenerateFeatureFlag(
"gestureediting", keyboard::IsGestureEditingEnabled())); "gestureediting", !base::CommandLine::ForCurrentProcess()->HasSwitch(
keyboard::switches::kDisableGestureEditing)));
features->AppendString(GenerateFeatureFlag( features->AppendString(GenerateFeatureFlag(
"fullscreenhandwriting", "fullscreenhandwriting",
keyboard::IsFullscreenHandwritingVirtualKeyboardEnabled())); base::FeatureList::IsEnabled(
features::kEnableFullscreenHandwritingVirtualKeyboard)));
features->AppendString(GenerateFeatureFlag( features->AppendString(GenerateFeatureFlag(
"virtualkeyboardmdui", keyboard::IsVirtualKeyboardMdUiEnabled())); "virtualkeyboardmdui",
features->AppendString( base::FeatureList::IsEnabled(features::kEnableVirtualKeyboardMdUi)));
GenerateFeatureFlag("imeservice", keyboard::IsImeServiceEnabled())); features->AppendString(GenerateFeatureFlag(
"imeservice", base::FeatureList::IsEnabled(
chromeos::features::kImeServiceConnectable)));
auto config = keyboard::KeyboardController::Get()->keyboard_config(); auto config = keyboard::KeyboardController::Get()->keyboard_config();
// TODO(oka): Change this to use config.voice_input. // TODO(oka): Change this to use config.voice_input.
......
...@@ -11,6 +11,8 @@ ...@@ -11,6 +11,8 @@
#include "ash/public/cpp/shell_window_ids.h" #include "ash/public/cpp/shell_window_ids.h"
#include "ash/root_window_controller.h" #include "ash/root_window_controller.h"
#include "ash/shell.h" #include "ash/shell.h"
#include "base/command_line.h"
#include "base/feature_list.h"
#include "base/macros.h" #include "base/macros.h"
#include "base/no_destructor.h" #include "base/no_destructor.h"
#include "chrome/browser/ui/ash/chrome_keyboard_controller_observer.h" #include "chrome/browser/ui/ash/chrome_keyboard_controller_observer.h"
...@@ -28,12 +30,14 @@ ...@@ -28,12 +30,14 @@
#include "ui/base/ime/ime_bridge.h" #include "ui/base/ime/ime_bridge.h"
#include "ui/base/ime/input_method.h" #include "ui/base/ime/input_method.h"
#include "ui/base/ime/text_input_client.h" #include "ui/base/ime/text_input_client.h"
#include "ui/base/ui_base_features.h"
#include "ui/compositor/layer.h" #include "ui/compositor/layer.h"
#include "ui/compositor_extra/shadow.h" #include "ui/compositor_extra/shadow.h"
#include "ui/gfx/geometry/insets.h" #include "ui/gfx/geometry/insets.h"
#include "ui/gfx/geometry/rect.h" #include "ui/gfx/geometry/rect.h"
#include "ui/keyboard/keyboard_controller.h" #include "ui/keyboard/keyboard_controller.h"
#include "ui/keyboard/keyboard_resource_util.h" #include "ui/keyboard/keyboard_resource_util.h"
#include "ui/keyboard/keyboard_switches.h"
#include "ui/keyboard/keyboard_util.h" #include "ui/keyboard/keyboard_util.h"
#include "ui/wm/core/shadow_types.h" #include "ui/wm/core/shadow_types.h"
...@@ -145,8 +149,9 @@ aura::Window* ChromeKeyboardUI::GetKeyboardWindow() { ...@@ -145,8 +149,9 @@ aura::Window* ChromeKeyboardUI::GetKeyboardWindow() {
// keyboard to be see-through. // keyboard to be see-through.
// TODO(https://crbug.com/840731): Find a permanent fix for this on the // TODO(https://crbug.com/840731): Find a permanent fix for this on the
// keyboard extension side. // keyboard extension side.
if (keyboard::IsFullscreenHandwritingVirtualKeyboardEnabled() || if (base::FeatureList::IsEnabled(
keyboard::IsVirtualKeyboardMdUiEnabled()) { features::kEnableFullscreenHandwritingVirtualKeyboard) ||
base::FeatureList::IsEnabled(features::kEnableVirtualKeyboardMdUi)) {
view->SetBackgroundColor(SK_ColorTRANSPARENT); view->SetBackgroundColor(SK_ColorTRANSPARENT);
view->GetNativeView()->SetTransparent(true); view->GetNativeView()->SetTransparent(true);
} }
...@@ -264,8 +269,10 @@ GURL ChromeKeyboardUI::GetVirtualKeyboardUrl() { ...@@ -264,8 +269,10 @@ GURL ChromeKeyboardUI::GetVirtualKeyboardUrl() {
if (!override_url.is_empty()) if (!override_url.is_empty())
return override_url; return override_url;
if (!keyboard::IsInputViewEnabled()) if (base::CommandLine::ForCurrentProcess()->HasSwitch(
keyboard::switches::kDisableInputView)) {
return GURL(keyboard::kKeyboardURL); return GURL(keyboard::kKeyboardURL);
}
chromeos::input_method::InputMethodManager* ime_manager = chromeos::input_method::InputMethodManager* ime_manager =
chromeos::input_method::InputMethodManager::Get(); chromeos::input_method::InputMethodManager::Get();
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "base/metrics/histogram_macros.h" #include "base/metrics/histogram_macros.h"
#include "base/threading/thread_task_runner_handle.h" #include "base/threading/thread_task_runner_handle.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "ui/aura/client/aura_constants.h"
#include "ui/aura/env.h" #include "ui/aura/env.h"
#include "ui/aura/window.h" #include "ui/aura/window.h"
#include "ui/aura/window_delegate.h" #include "ui/aura/window_delegate.h"
...@@ -686,7 +687,7 @@ void KeyboardController::OnShowVirtualKeyboardIfEnabled() { ...@@ -686,7 +687,7 @@ void KeyboardController::OnShowVirtualKeyboardIfEnabled() {
} }
void KeyboardController::ShowKeyboardInternal(const display::Display& display) { void KeyboardController::ShowKeyboardInternal(const display::Display& display) {
keyboard::MarkKeyboardLoadStarted(); MarkKeyboardLoadStarted();
PopulateKeyboardContent(display, true); PopulateKeyboardContent(display, true);
UpdateInputMethodObserver(); UpdateInputMethodObserver();
} }
...@@ -1009,4 +1010,24 @@ void KeyboardController::EnsureCaretInWorkArea( ...@@ -1009,4 +1010,24 @@ void KeyboardController::EnsureCaretInWorkArea(
} }
} }
void KeyboardController::MarkKeyboardLoadStarted() {
if (!keyboard_load_time_logged_)
keyboard_load_time_start_ = base::Time::Now();
}
void KeyboardController::MarkKeyboardLoadFinished() {
// Possible to get a load finished without a start if navigating directly to
// chrome://keyboard.
if (keyboard_load_time_start_.is_null())
return;
if (keyboard_load_time_logged_)
return;
// Log the delta only once.
UMA_HISTOGRAM_TIMES("VirtualKeyboard.InitLatency.FirstLoad",
base::Time::Now() - keyboard_load_time_start_);
keyboard_load_time_logged_ = true;
}
} // namespace keyboard } // namespace keyboard
...@@ -378,6 +378,15 @@ class KEYBOARD_EXPORT KeyboardController ...@@ -378,6 +378,15 @@ class KEYBOARD_EXPORT KeyboardController
// window). // window).
void EnsureCaretInWorkArea(const gfx::Rect& occluded_bounds); void EnsureCaretInWorkArea(const gfx::Rect& occluded_bounds);
// Marks that the keyboard load has started. This is used to measure the time
// it takes to fully load the keyboard. This should be called before
// MarkKeyboardLoadFinished.
void MarkKeyboardLoadStarted();
// Marks that the keyboard load has ended. This finishes measuring that the
// keyboard is loaded.
void MarkKeyboardLoadFinished();
std::unique_ptr<KeyboardUI> ui_; std::unique_ptr<KeyboardUI> ui_;
KeyboardLayoutDelegate* layout_delegate_ = nullptr; KeyboardLayoutDelegate* layout_delegate_ = nullptr;
ScopedObserver<ui::InputMethod, ui::InputMethodObserver> ime_observer_; ScopedObserver<ui::InputMethod, ui::InputMethodObserver> ime_observer_;
...@@ -424,6 +433,9 @@ class KEYBOARD_EXPORT KeyboardController ...@@ -424,6 +433,9 @@ class KEYBOARD_EXPORT KeyboardController
DisplayUtil display_util_; DisplayUtil display_util_;
bool keyboard_load_time_logged_ = false;
base::Time keyboard_load_time_start_;
base::WeakPtrFactory<KeyboardController> weak_factory_report_lingering_state_; base::WeakPtrFactory<KeyboardController> weak_factory_report_lingering_state_;
base::WeakPtrFactory<KeyboardController> weak_factory_will_hide_; base::WeakPtrFactory<KeyboardController> weak_factory_will_hide_;
......
...@@ -7,20 +7,10 @@ ...@@ -7,20 +7,10 @@
#include <string> #include <string>
#include "base/command_line.h" #include "base/command_line.h"
#include "base/feature_list.h"
#include "base/lazy_instance.h"
#include "base/logging.h"
#include "base/metrics/histogram_macros.h" #include "base/metrics/histogram_macros.h"
#include "base/strings/string16.h"
#include "chromeos/chromeos_features.h"
#include "ui/aura/client/aura_constants.h"
#include "ui/aura/window_tree_host.h" #include "ui/aura/window_tree_host.h"
#include "ui/base/ime/input_method.h" #include "ui/base/ime/input_method.h"
#include "ui/base/ime/input_method_base.h"
#include "ui/base/ime/text_input_client.h" #include "ui/base/ime/text_input_client.h"
#include "ui/base/ime/text_input_flags.h"
#include "ui/base/ui_base_features.h"
#include "ui/base/ui_base_switches.h"
#include "ui/events/event_sink.h" #include "ui/events/event_sink.h"
#include "ui/events/event_utils.h" #include "ui/events/event_utils.h"
#include "ui/events/keycodes/dom/dom_code.h" #include "ui/events/keycodes/dom/dom_code.h"
...@@ -28,7 +18,6 @@ ...@@ -28,7 +18,6 @@
#include "ui/events/keycodes/dom/keycode_converter.h" #include "ui/events/keycodes/dom/keycode_converter.h"
#include "ui/events/keycodes/keyboard_code_conversion.h" #include "ui/events/keycodes/keyboard_code_conversion.h"
#include "ui/keyboard/keyboard_switches.h" #include "ui/keyboard/keyboard_switches.h"
#include "ui/keyboard/keyboard_ui.h"
namespace keyboard { namespace keyboard {
...@@ -47,10 +36,6 @@ void SendProcessKeyEvent(ui::EventType type, ...@@ -47,10 +36,6 @@ void SendProcessKeyEvent(ui::EventType type,
CHECK(!details.dispatcher_destroyed); CHECK(!details.dispatcher_destroyed);
} }
bool g_keyboard_load_time_logged = false;
base::LazyInstance<base::Time>::DestructorAtExit g_keyboard_load_time_start =
LAZY_INSTANCE_INITIALIZER;
bool g_accessibility_keyboard_enabled = false; bool g_accessibility_keyboard_enabled = false;
bool g_hotrod_keyboard_enabled = false; bool g_hotrod_keyboard_enabled = false;
...@@ -140,43 +125,6 @@ void SetKeyboardShowOverride(KeyboardShowOverride show_override) { ...@@ -140,43 +125,6 @@ void SetKeyboardShowOverride(KeyboardShowOverride show_override) {
g_keyboard_show_override = show_override; g_keyboard_show_override = show_override;
} }
bool IsInputViewEnabled() {
return !base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kDisableInputView);
}
bool IsFloatingVirtualKeyboardEnabled() {
return base::FeatureList::IsEnabled(features::kEnableFloatingVirtualKeyboard);
}
bool IsFullscreenHandwritingVirtualKeyboardEnabled() {
return base::FeatureList::IsEnabled(
features::kEnableFullscreenHandwritingVirtualKeyboard);
}
bool IsStylusVirtualKeyboardEnabled() {
return base::FeatureList::IsEnabled(features::kEnableStylusVirtualKeyboard);
}
bool IsVirtualKeyboardMdUiEnabled() {
return base::FeatureList::IsEnabled(features::kEnableVirtualKeyboardMdUi);
}
bool IsGestureTypingEnabled() {
return !base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kDisableGestureTyping);
}
bool IsGestureEditingEnabled() {
return !base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kDisableGestureEditing);
}
bool IsImeServiceEnabled() {
return base::FeatureList::IsEnabled(
chromeos::features::kImeServiceConnectable);
}
bool SendKeyEvent(const std::string type, bool SendKeyEvent(const std::string type,
int key_value, int key_value,
int key_code, int key_code,
...@@ -243,24 +191,4 @@ bool SendKeyEvent(const std::string type, ...@@ -243,24 +191,4 @@ bool SendKeyEvent(const std::string type,
return true; return true;
} }
void MarkKeyboardLoadStarted() {
if (!g_keyboard_load_time_logged)
g_keyboard_load_time_start.Get() = base::Time::Now();
}
void MarkKeyboardLoadFinished() {
// Possible to get a load finished without a start if navigating directly to
// chrome://keyboard.
if (g_keyboard_load_time_start.Get().is_null())
return;
if (!g_keyboard_load_time_logged) {
// Log the delta only once.
UMA_HISTOGRAM_TIMES(
"VirtualKeyboard.InitLatency.FirstLoad",
base::Time::Now() - g_keyboard_load_time_start.Get());
g_keyboard_load_time_logged = true;
}
}
} // namespace keyboard } // namespace keyboard
...@@ -77,10 +77,6 @@ KEYBOARD_EXPORT bool IsKeyboardEnabled(); ...@@ -77,10 +77,6 @@ KEYBOARD_EXPORT bool IsKeyboardEnabled();
KEYBOARD_EXPORT void SetKeyboardShowOverride( KEYBOARD_EXPORT void SetKeyboardShowOverride(
KeyboardShowOverride show_override); KeyboardShowOverride show_override);
// Returns true if an IME extension can specify a custom input view for the
// virtual keyboard window.
KEYBOARD_EXPORT bool IsInputViewEnabled();
// Sets whehther the keyboards is in restricted state - state where advanced // Sets whehther the keyboards is in restricted state - state where advanced
// virtual keyboard features are disabled. // virtual keyboard features are disabled.
KEYBOARD_EXPORT void SetKeyboardRestricted(bool restricted); KEYBOARD_EXPORT void SetKeyboardRestricted(bool restricted);
...@@ -88,32 +84,6 @@ KEYBOARD_EXPORT void SetKeyboardRestricted(bool restricted); ...@@ -88,32 +84,6 @@ KEYBOARD_EXPORT void SetKeyboardRestricted(bool restricted);
// Returns whether the keyboard is in restricted state. // Returns whether the keyboard is in restricted state.
KEYBOARD_EXPORT bool GetKeyboardRestricted(); KEYBOARD_EXPORT bool GetKeyboardRestricted();
// Returns true if floating virtual keyboard feature is enabled.
KEYBOARD_EXPORT bool IsFloatingVirtualKeyboardEnabled();
// Returns true if fullscreen handwriting virtual keyboard feature is enabled.
KEYBOARD_EXPORT bool IsFullscreenHandwritingVirtualKeyboardEnabled();
// Returns true if stylus virtual keyboard feature is enabled.
KEYBOARD_EXPORT bool IsStylusVirtualKeyboardEnabled();
// Returns true if virtual keyboard md ui feature is enabled.
KEYBOARD_EXPORT bool IsVirtualKeyboardMdUiEnabled();
// Returns true if gesture typing option is enabled for virtual keyboard.
KEYBOARD_EXPORT bool IsGestureTypingEnabled();
// Returns true if gesture editing option is enabled for virtual keyboard.
KEYBOARD_EXPORT bool IsGestureEditingEnabled();
// Returns true if voice input is not disabled for the keyboard by the command
// line switch. It's up to the client to check if there is an input device
// available.
KEYBOARD_EXPORT bool IsVoiceInputEnabled();
// Returns true if the IME service is enabled.
KEYBOARD_EXPORT bool IsImeServiceEnabled();
// Sends a fabricated key event, where |type| is the event type, |key_value| // Sends a fabricated key event, where |type| is the event type, |key_value|
// is the unicode value of the character, |key_code| is the legacy key code // is the unicode value of the character, |key_code| is the legacy key code
// value, |key_name| is the name of the key as defined in the DOM3 key event // value, |key_name| is the name of the key as defined in the DOM3 key event
...@@ -127,15 +97,6 @@ KEYBOARD_EXPORT bool SendKeyEvent(std::string type, ...@@ -127,15 +97,6 @@ KEYBOARD_EXPORT bool SendKeyEvent(std::string type,
int modifiers, int modifiers,
aura::WindowTreeHost* host); aura::WindowTreeHost* host);
// Marks that the keyboard load has started. This is used to measure the time it
// takes to fully load the keyboard. This should be called before
// MarkKeyboardLoadFinished.
KEYBOARD_EXPORT void MarkKeyboardLoadStarted();
// Marks that the keyboard load has ended. This finishes measuring that the
// keyboard is loaded.
KEYBOARD_EXPORT void MarkKeyboardLoadFinished();
} // namespace keyboard } // namespace keyboard
#endif // UI_KEYBOARD_KEYBOARD_UTIL_H_ #endif // UI_KEYBOARD_KEYBOARD_UTIL_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment