[Mfill Android] Move UI component into new feature folder

With this CL, the keyboard accessory component moves into the new folder
chrome/android/features/keyboard_accessory/

To keep the public interfaces separated from the implementation, move
them into:
chrome/android/features/keyboard_accessory/public

chrome_junit_test won't include the keyboard_accessory_junit_tests by
default anymore which speeds up the compile time of the latter. To
ensure that the bots still exercise these tests, they were added to the
configs.

Summary of changes:
 - move everything to chrome/android/features
 - create BUILD.gn file with new targets
 - add new java targets to chrome/android:java
 - add new test targets to bot configs
 - split out public/ interface
 - add factory to retrieve correct implementation during run-time
   - temporary use of reflection until injection method is agreed upon?
 - fix dependencies (subset of chrome/android/ dependencies)
 - fix DEPS (subset of chrome/android/ DEPS)

Intentional side-effects:
 - keyboard_accessory/OWNER file affects feature res/ folder

To generate a gradle file including the feature, make sure to add the
java target, like this:
. build/android/envsetup.sh && \
build/android/gradle/generate_gradle.py \
  --output-directory out/AndroidDebug \
  --target //chrome/android:chrome_public_apk \
  --target //chrome/android:chrome_public_test_apk \
  --target //chrome/android/features/keyboard_accessory:java

To run the new robolectric tests:
ninja -C out/AndroidDebug  -j2000 -l20 keyboard_accessory_junit_tests
and
./out/AndroidDebug/bin/run_keyboard_accessory_junit_tests

Bug: 945314, 846440
Change-Id: I676d0e22a5cb02eb97459da6047fda00f09a7902
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1545301
Reviewed-by: Andrew Grieve <agrieve@chromium.org>
Reviewed-by: Vadym Doroshenko <dvadym@chromium.org>
Reviewed-by: Jochen Eisinger <jochen@chromium.org>
Reviewed-by: Theresa <twellington@chromium.org>
Reviewed-by: Peter Wen <wnwen@chromium.org>
Commit-Queue: Friedrich [CET] <fhorschig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#653504}
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
index 011c7e0e..311abb01 100644
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -238,12 +238,22 @@
   }
 }
 
+# This prevents a cyclic dependency for features depending on the compositor.
+# TODO(crbug.com/846440): Move this to features/compositor when ready.
+android_library("chrome_public_java") {
+  java_files = [ "//chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewResizer.java" ]
+  deps = [
+    "//third_party/android_deps:com_android_support_support_annotations_java",
+  ]
+}
+
 android_library("chrome_java") {
   deps = [
     ":chrome_app_java_resources",
     ":chrome_download_java_resources",
     ":chrome_public_android_manifest",
     ":chrome_public_apk_template_resources",
+    ":chrome_public_java",
     ":chrome_version_constants",
     ":document_tab_model_info_proto_java",
     ":partner_location_descriptor_proto_java",
@@ -260,6 +270,8 @@
     "$google_play_services_package:google_play_services_tasks_java",
     "//base:base_java",
     "//base:jni_java",
+    "//chrome/android/features/keyboard_accessory/factory:java",
+    "//chrome/android/features/keyboard_accessory/public:java",
     "//chrome/android/third_party/compositor_animator:compositor_animator_java",
     "//chrome/android/webapk/libs/client:client_java",
     "//chrome/android/webapk/libs/common:common_java",
@@ -459,6 +471,7 @@
 java_group("chrome_all_java") {
   deps = [
     ":chrome_java",
+    "//chrome/android/features/keyboard_accessory/internal:java",
     "//chrome/android/features/media_router:java",
   ]
 }
@@ -469,6 +482,7 @@
   public_deps = [
     ":chrome_jni_headers",
     "//chrome/android/features/autofill_assistant:jni_headers",
+    "//chrome/android/features/keyboard_accessory:jni_headers",
     "//chrome/android/features/media_router:jni_headers",
   ]
 }
@@ -504,12 +518,10 @@
     "//chrome/browser/android/webapk/webapk_install_service.h",
     "//chrome/browser/android/webapk/webapk_installer.h",
     "//chrome/browser/android/webapk/webapk_types.h",
-    "//chrome/browser/autofill/manual_filling_view_interface.h",
     "//chrome/browser/banners/app_banner_settings_helper.h",
     "//chrome/browser/notifications/notification_channels_provider_android.h",
     "//chrome/browser/notifications/notification_platform_bridge_android.cc",
     "//chrome/browser/ntp_snippets/ntp_snippets_metrics.h",
-    "//chrome/browser/password_manager/password_accessory_metrics_util.h",
     "//chrome/browser/profiles/profile_metrics.h",
     "//chrome/browser/translate/android/translate_utils.h",
     "//chrome/browser/ui/android/infobars/infobar_android.h",
@@ -606,6 +618,7 @@
     "//base:base_java",
     "//base:base_java_test_support",
     "//base:base_junit_test_support",
+    "//chrome/android/features/keyboard_accessory/internal:java",
     "//chrome/android/features/tab_ui:java",
     "//chrome/android/webapk/libs/client:client_java",
     "//chrome/android/webapk/libs/common:common_java",
@@ -1923,6 +1936,7 @@
     ":chrome_test_apk_template_resources",
     ":chrome_test_java",
     "//chrome/android/features/autofill_assistant:test_java",
+    "//chrome/android/features/keyboard_accessory:test_java",
     "//chrome/android/features/media_router:test_java",
     "//chrome/android/webapk/libs/runtime_library:runtime_library_javatests",
     "//chrome/android/webapk/shell_apk:shell_apk_javatests",
@@ -2298,8 +2312,6 @@
     "java/src/org/chromium/chrome/browser/autofill/CreditCardScannerBridge.java",
     "java/src/org/chromium/chrome/browser/autofill/PersonalDataManager.java",
     "java/src/org/chromium/chrome/browser/autofill/PhoneNumberUtil.java",
-    "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AutofillKeyboardAccessoryBridge.java",
-    "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingBridge.java",
     "java/src/org/chromium/chrome/browser/background_sync/BackgroundSyncBackgroundTask.java",
     "java/src/org/chromium/chrome/browser/background_sync/BackgroundSyncBackgroundTaskScheduler.java",
     "java/src/org/chromium/chrome/browser/banners/AppBannerManager.java",
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
index c5ae594..6679392 100644
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -91,52 +91,6 @@
   "java/src/org/chromium/chrome/browser/autofill/CreditCardScannerBridge.java",
   "java/src/org/chromium/chrome/browser/autofill/PersonalDataManager.java",
   "java/src/org/chromium/chrome/browser/autofill/PhoneNumberUtil.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AutofillKeyboardAccessoryBridge.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingMetricsRecorder.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardExtensionViewResizer.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingBridge.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingComponent.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingComponentFactory.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingCoordinator.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingMediator.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingProperties.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingState.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingStateCache.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryCoordinator.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryMediator.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryModernView.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryMetricsRecorder.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryModernViewBinder.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryProperties.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryRecyclerViewMcp.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryView.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryViewBinder.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/data/Provider.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/data/PropertyProvider.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/data/CachedProviderAdapter.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/data/KeyboardAccessoryData.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessoryPagerAdapter.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetCoordinator.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetMediator.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetMetricsRecorder.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetProperties.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetView.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetViewBinder.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabCoordinator.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabMetricsRecorder.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabModel.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabViewBinder.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/CreditCardAccessorySheetCoordinator.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessoryInfoView.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetCoordinator.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetMediator.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewBinder.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetModernViewBinder.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutCoordinator.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutMediator.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutProperties.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutView.java",
-  "java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutViewBinder.java",
   "java/src/org/chromium/chrome/browser/background_sync/BackgroundSyncBackgroundTaskScheduler.java",
   "java/src/org/chromium/chrome/browser/background_sync/BackgroundSyncBackgroundTask.java",
   "java/src/org/chromium/chrome/browser/background_task_scheduler/NativeBackgroundTask.java",
@@ -221,7 +175,6 @@
   "java/src/org/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl.java",
   "java/src/org/chromium/chrome/browser/compositor/CompositorView.java",
   "java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java",
-  "java/src/org/chromium/chrome/browser/compositor/CompositorViewResizer.java",
   "java/src/org/chromium/chrome/browser/compositor/EventOffsetHandler.java",
   "java/src/org/chromium/chrome/browser/compositor/Invalidator.java",
   "java/src/org/chromium/chrome/browser/compositor/LayerTitleCache.java",
diff --git a/chrome/android/chrome_junit_test_java_sources.gni b/chrome/android/chrome_junit_test_java_sources.gni
index 5c995a6..c7229d5 100644
--- a/chrome/android/chrome_junit_test_java_sources.gni
+++ b/chrome/android/chrome_junit_test_java_sources.gni
@@ -17,11 +17,6 @@
   "junit/src/org/chromium/chrome/browser/ShortcutHelperTest.java",
   "junit/src/org/chromium/chrome/browser/SSLClientCertificateRequestTest.java",
   "junit/src/org/chromium/chrome/browser/autofill/AutofillUiUtilsTest.java",
-  "junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetControllerTest.java",
-  "junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingControllerTest.java",
-  "junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryControllerTest.java",
-  "junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetControllerTest.java",
-  "junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutControllerTest.java",
   "junit/src/org/chromium/chrome/browser/background_sync/BackgroundSyncBackgroundTaskSchedulerTest.java",
   "junit/src/org/chromium/chrome/browser/background_sync/BackgroundSyncBackgroundTaskTest.java",
   "junit/src/org/chromium/chrome/browser/background_task_scheduler/NativeBackgroundTaskTest.java",
diff --git a/chrome/android/chrome_test_java_sources.gni b/chrome/android/chrome_test_java_sources.gni
index 1c03171..338b5d8 100644
--- a/chrome/android/chrome_test_java_sources.gni
+++ b/chrome/android/chrome_test_java_sources.gni
@@ -60,20 +60,6 @@
   "javatests/src/org/chromium/chrome/browser/autofill/AutofillTest.java",
   "javatests/src/org/chromium/chrome/browser/autofill/AutofillTestHelper.java",
   "javatests/src/org/chromium/chrome/browser/autofill/PersonalDataManagerTest.java",
-  "javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AutofillKeyboardAccessoryIntegrationTest.java",
-  "javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingIntegrationTest.java",
-  "javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingTestHelper.java",
-  "javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingUiCaptureTest.java",
-  "javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/FakeKeyboard.java",
-  "javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryModernViewTest.java",
-  "javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryViewTest.java",
-  "javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetViewTest.java",
-  "javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessoryIntegrationTest.java",
-  "javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewTest.java",
-  "javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetModernViewTest.java",
-  "javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabViewTest.java",
-  "javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutViewTest.java",
-  "javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabTestHelper.java",
   "javatests/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java",
   "javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkBridgeTest.java",
   "javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkModelTest.java",
diff --git a/chrome/android/features/keyboard_accessory/BUILD.gn b/chrome/android/features/keyboard_accessory/BUILD.gn
new file mode 100644
index 0000000..d03685c
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/BUILD.gn
@@ -0,0 +1,80 @@
+# Copyright 2019 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.
+
+import("//build/config/android/rules.gni")
+
+generate_jni("jni_headers") {
+  sources = [
+    "internal/java/src/org/chromium/chrome/browser/keyboard_accessory/AutofillKeyboardAccessoryViewBridge.java",
+    "internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentBridge.java",
+  ]
+  jni_package = "chrome"
+}
+
+android_library("test_java") {
+  testonly = true
+
+  java_files = [
+    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/AutofillKeyboardAccessoryIntegrationTest.java",
+    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingIntegrationTest.java",
+    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingTestHelper.java",
+    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingUiCaptureTest.java",
+    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/FakeKeyboard.java",
+    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryViewTest.java",
+    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryModernViewTest.java",
+    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetViewTest.java",
+    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessoryIntegrationTest.java",
+    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewTest.java",
+    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetModernViewTest.java",
+    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabViewTest.java",
+    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutViewTest.java",
+    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabTestHelper.java",
+  ]
+
+  deps = [
+    "internal:java",
+    "public:java",
+    "//base:base_java",
+    "//base:base_java_test_support",
+    "//chrome/android:chrome_java",
+    "//chrome/android:chrome_test_java",
+    "//chrome/android:chrome_test_util_java",
+    "//chrome/test/android:chrome_java_test_support",
+    "//components/autofill/android:autofill_java",
+    "//content/public/android:content_java",
+    "//content/public/test/android:content_java_test_support",
+    "//net/android:net_java_test_support",
+    "//third_party/android_deps:com_android_support_design_java",
+    "//third_party/android_deps:com_android_support_recyclerview_v7_java",
+    "//third_party/android_support_test_runner:runner_java",
+    "//third_party/espresso:espresso_all_java",
+    "//third_party/hamcrest:hamcrest_java",
+    "//third_party/junit",
+    "//ui/android:ui_full_java",
+    "//ui/android:ui_utils_java",
+  ]
+}
+
+junit_binary("keyboard_accessory_junit_tests") {
+  testonly = true
+
+  java_files = [
+    "junit/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetControllerTest.java",
+    "junit/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingControllerTest.java",
+    "junit/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryControllerTest.java",
+    "junit/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetControllerTest.java",
+    "junit/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutControllerTest.java",
+  ]
+
+  deps = [
+    "internal:java",
+    "public:java",
+    "//base:base_java_test_support",
+    "//base:base_junit_test_support",
+    "//chrome/android:chrome_junit_test_support",
+    "//chrome/android:chrome_test_util_java",
+    "//third_party/junit",
+    "//third_party/mockito:mockito_java",
+  ]
+}
diff --git a/chrome/android/features/keyboard_accessory/DEPS b/chrome/android/features/keyboard_accessory/DEPS
new file mode 100644
index 0000000..8654603
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/DEPS
@@ -0,0 +1,5 @@
+include_rules = [
+  "+components/autofill/android/java/src/org/chromium/components/autofill",
+  "-content/public/android",
+  "+content/public/android/java/src/org/chromium/content_public",
+]
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/OWNERS b/chrome/android/features/keyboard_accessory/OWNERS
similarity index 100%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/OWNERS
rename to chrome/android/features/keyboard_accessory/OWNERS
diff --git a/chrome/android/features/keyboard_accessory/factory/BUILD.gn b/chrome/android/features/keyboard_accessory/factory/BUILD.gn
new file mode 100644
index 0000000..89e7000
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/factory/BUILD.gn
@@ -0,0 +1,14 @@
+# Copyright 2019 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.
+
+import("//build/config/android/rules.gni")
+
+# Only need to depend on this target if explicitly calling ManualFillingComponent#createComponent.
+android_library("java") {
+  deps = [
+    "//chrome/android/features/keyboard_accessory/public:java",
+  ]
+  java_files = [ "generated/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentFactory.java" ]
+  jar_excluded_patterns = [ "*" ]
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingComponentFactory.java b/chrome/android/features/keyboard_accessory/factory/generated/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentFactory.java
similarity index 73%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingComponentFactory.java
rename to chrome/android/features/keyboard_accessory/factory/generated/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentFactory.java
index 8aaa0858f..8310e65 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingComponentFactory.java
+++ b/chrome/android/features/keyboard_accessory/factory/generated/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentFactory.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory;
+package org.chromium.chrome.browser.keyboard_accessory;
 
 /**
  * Use {@link #createComponent()} to instantiate a {@link ManualFillingComponent}.
@@ -12,10 +12,10 @@
 
     /**
      * Creates a {@link ManualFillingComponent} if the implementation is available. If it isn't,
-     * null is returned instead.
-     * @return A {@link ManualFillingComponent}.
+     * null is returned instead which doesn't do anything.
+     * @return null.
      */
     public static ManualFillingComponent createComponent() {
-        return new ManualFillingCoordinator();
+        return null;
     }
-}
\ No newline at end of file
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingComponentFactory.java b/chrome/android/features/keyboard_accessory/factory/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentFactory.java
similarity index 66%
copy from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingComponentFactory.java
copy to chrome/android/features/keyboard_accessory/factory/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentFactory.java
index 8aaa0858f..2d538da 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingComponentFactory.java
+++ b/chrome/android/features/keyboard_accessory/factory/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentFactory.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory;
+package org.chromium.chrome.browser.keyboard_accessory;
 
 /**
  * Use {@link #createComponent()} to instantiate a {@link ManualFillingComponent}.
@@ -11,11 +11,10 @@
     private ManualFillingComponentFactory() {}
 
     /**
-     * Creates a {@link ManualFillingComponent} if the implementation is available. If it isn't,
-     * null is returned instead.
-     * @return A {@link ManualFillingComponent}.
+     * Creates a {@link ManualFillingCoordinator}.
+     * @return A {@link ManualFillingCoordinator}.
      */
     public static ManualFillingComponent createComponent() {
         return new ManualFillingCoordinator();
     }
-}
\ No newline at end of file
+}
diff --git a/chrome/android/features/keyboard_accessory/internal/BUILD.gn b/chrome/android/features/keyboard_accessory/internal/BUILD.gn
new file mode 100644
index 0000000..79e64f32
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/BUILD.gn
@@ -0,0 +1,129 @@
+# Copyright 2019 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.
+
+import("//build/config/android/rules.gni")
+import("//chrome/common/features.gni")
+
+android_library("java") {
+  deps = [
+    ":java_resources",
+    "//base:base_java",
+
+    # TODO(crbug/951695): Cyclic dependency. Depend on public only when ready.
+    "//chrome/android:chrome_java",
+    "//chrome/android:chrome_public_java",
+    "//chrome/android/features/keyboard_accessory/public:java",
+    "//components/autofill/android:autofill_java",
+    "//content/public/android:content_java",
+    "//third_party/android_deps:android_support_v7_appcompat_java",
+    "//third_party/android_deps:com_android_support_design_java",
+    "//third_party/android_deps:com_android_support_recyclerview_v7_java",
+    "//ui/android:ui_java",
+    "//ui/android:ui_utils_java",
+  ]
+  java_files = [
+    "../factory/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentFactory.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/AutofillKeyboardAccessoryViewBridge.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/KeyboardExtensionViewResizer.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentBridge.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingCoordinator.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMetricsRecorder.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingProperties.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingState.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingStateCache.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryCoordinator.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMediator.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryModernView.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMetricsRecorder.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryModernViewBinder.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryProperties.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryRecyclerViewMcp.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryView.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryViewBinder.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/data/CachedProviderAdapter.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessoryPagerAdapter.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetCoordinator.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetMediator.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetMetricsRecorder.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetProperties.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetView.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetViewBinder.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabCoordinator.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabMetricsRecorder.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabModel.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabViewBinder.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/CreditCardAccessorySheetCoordinator.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessoryInfoView.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetCoordinator.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetMediator.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewBinder.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetModernViewBinder.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutCoordinator.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutMediator.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutProperties.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutView.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutViewBinder.java",
+  ]
+}
+
+android_resources("java_resources") {
+  resource_dirs = [ "java/res" ]
+  deps = [
+    ":java_strings_grd",
+    "//chrome/android:chrome_app_java_resources",
+  ]
+  custom_package = "org.chromium.chrome.browser.keyboard_accessory"
+}
+
+java_strings_grd("java_strings_grd") {
+  defines = chrome_grit_defines
+  grd_file = "java/strings/android_keyboard_accessory_strings.grd"
+  outputs = [
+    "values-am/android_chrome_keyboard_accessory_strings.xml",
+    "values-ar/android_chrome_keyboard_accessory_strings.xml",
+    "values-bg/android_chrome_keyboard_accessory_strings.xml",
+    "values-ca/android_chrome_keyboard_accessory_strings.xml",
+    "values-cs/android_chrome_keyboard_accessory_strings.xml",
+    "values-da/android_chrome_keyboard_accessory_strings.xml",
+    "values-de/android_chrome_keyboard_accessory_strings.xml",
+    "values-el/android_chrome_keyboard_accessory_strings.xml",
+    "values/android_chrome_keyboard_accessory_strings.xml",
+    "values-en-rGB/android_chrome_keyboard_accessory_strings.xml",
+    "values-es/android_chrome_keyboard_accessory_strings.xml",
+    "values-es-rUS/android_chrome_keyboard_accessory_strings.xml",
+    "values-fa/android_chrome_keyboard_accessory_strings.xml",
+    "values-fi/android_chrome_keyboard_accessory_strings.xml",
+    "values-tl/android_chrome_keyboard_accessory_strings.xml",
+    "values-fr/android_chrome_keyboard_accessory_strings.xml",
+    "values-hi/android_chrome_keyboard_accessory_strings.xml",
+    "values-hr/android_chrome_keyboard_accessory_strings.xml",
+    "values-hu/android_chrome_keyboard_accessory_strings.xml",
+    "values-in/android_chrome_keyboard_accessory_strings.xml",
+    "values-it/android_chrome_keyboard_accessory_strings.xml",
+    "values-iw/android_chrome_keyboard_accessory_strings.xml",
+    "values-ja/android_chrome_keyboard_accessory_strings.xml",
+    "values-ko/android_chrome_keyboard_accessory_strings.xml",
+    "values-lt/android_chrome_keyboard_accessory_strings.xml",
+    "values-lv/android_chrome_keyboard_accessory_strings.xml",
+    "values-nl/android_chrome_keyboard_accessory_strings.xml",
+    "values-nb/android_chrome_keyboard_accessory_strings.xml",
+    "values-pl/android_chrome_keyboard_accessory_strings.xml",
+    "values-pt-rBR/android_chrome_keyboard_accessory_strings.xml",
+    "values-pt-rPT/android_chrome_keyboard_accessory_strings.xml",
+    "values-ro/android_chrome_keyboard_accessory_strings.xml",
+    "values-ru/android_chrome_keyboard_accessory_strings.xml",
+    "values-sk/android_chrome_keyboard_accessory_strings.xml",
+    "values-sl/android_chrome_keyboard_accessory_strings.xml",
+    "values-sr/android_chrome_keyboard_accessory_strings.xml",
+    "values-sv/android_chrome_keyboard_accessory_strings.xml",
+    "values-sw/android_chrome_keyboard_accessory_strings.xml",
+    "values-th/android_chrome_keyboard_accessory_strings.xml",
+    "values-tr/android_chrome_keyboard_accessory_strings.xml",
+    "values-uk/android_chrome_keyboard_accessory_strings.xml",
+    "values-vi/android_chrome_keyboard_accessory_strings.xml",
+    "values-zh-rCN/android_chrome_keyboard_accessory_strings.xml",
+    "values-zh-rTW/android_chrome_keyboard_accessory_strings.xml",
+  ]
+}
diff --git a/chrome/android/java/res/drawable/autofill_chip_inset.xml b/chrome/android/features/keyboard_accessory/internal/java/res/drawable/autofill_chip_inset.xml
similarity index 100%
rename from chrome/android/java/res/drawable/autofill_chip_inset.xml
rename to chrome/android/features/keyboard_accessory/internal/java/res/drawable/autofill_chip_inset.xml
diff --git a/chrome/android/java/res/layout/keyboard_accessory.xml b/chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory.xml
similarity index 90%
rename from chrome/android/java/res/layout/keyboard_accessory.xml
rename to chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory.xml
index b9eb0c0..fe4e134 100644
--- a/chrome/android/java/res/layout/keyboard_accessory.xml
+++ b/chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory.xml
@@ -3,7 +3,7 @@
      Use of this source code is governed by a BSD-style license that can be
      found in the LICENSE file. -->
 
-<org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryView
+<org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryView
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/keyboard_accessory"
@@ -46,4 +46,4 @@
             android:layout_height="match_parent"/>
     </LinearLayout>
 
-</org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryView>
+</org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryView>
diff --git a/chrome/android/java/res/layout/keyboard_accessory_action.xml b/chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_action.xml
similarity index 100%
rename from chrome/android/java/res/layout/keyboard_accessory_action.xml
rename to chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_action.xml
diff --git a/chrome/android/java/res/layout/keyboard_accessory_action_modern.xml b/chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_action_modern.xml
similarity index 100%
rename from chrome/android/java/res/layout/keyboard_accessory_action_modern.xml
rename to chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_action_modern.xml
diff --git a/chrome/android/java/res/layout/keyboard_accessory_chip.xml b/chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_chip.xml
similarity index 100%
rename from chrome/android/java/res/layout/keyboard_accessory_chip.xml
rename to chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_chip.xml
diff --git a/chrome/android/java/res/layout/keyboard_accessory_modern.xml b/chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_modern.xml
similarity index 93%
rename from chrome/android/java/res/layout/keyboard_accessory_modern.xml
rename to chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_modern.xml
index 662ff32e..9f4ab02 100644
--- a/chrome/android/java/res/layout/keyboard_accessory_modern.xml
+++ b/chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_modern.xml
@@ -3,7 +3,7 @@
      Use of this source code is governed by a BSD-style license that can be
      found in the LICENSE file. -->
 
-<org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryModernView
+<org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryModernView
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/keyboard_accessory"
@@ -68,4 +68,4 @@
 
     </LinearLayout>
 
-</org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryModernView>
+</org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryModernView>
diff --git a/chrome/android/java/res/layout/keyboard_accessory_sheet.xml b/chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_sheet.xml
similarity index 85%
rename from chrome/android/java/res/layout/keyboard_accessory_sheet.xml
rename to chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_sheet.xml
index db70449..c8b58513 100644
--- a/chrome/android/java/res/layout/keyboard_accessory_sheet.xml
+++ b/chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_sheet.xml
@@ -3,7 +3,7 @@
      Use of this source code is governed by a BSD-style license that can be
      found in the LICENSE file. -->
 
-<org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetView
+<org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetView
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:fillViewport="true"
     android:paddingTop="0dp"
@@ -27,4 +27,4 @@
         android:scaleType="fitXY"
         android:visibility="invisible"
         android:importantForAccessibility="no" />
-</org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetView>
\ No newline at end of file
+</org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetView>
diff --git a/chrome/android/java/res/layout/keyboard_accessory_sheet_tab_legacy_password_info.xml b/chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_sheet_tab_legacy_password_info.xml
similarity index 100%
rename from chrome/android/java/res/layout/keyboard_accessory_sheet_tab_legacy_password_info.xml
rename to chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_sheet_tab_legacy_password_info.xml
diff --git a/chrome/android/java/res/layout/keyboard_accessory_sheet_tab_legacy_title.xml b/chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_sheet_tab_legacy_title.xml
similarity index 100%
rename from chrome/android/java/res/layout/keyboard_accessory_sheet_tab_legacy_title.xml
rename to chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_sheet_tab_legacy_title.xml
diff --git a/chrome/android/java/res/layout/keyboard_accessory_sheet_tab_password_info.xml b/chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_sheet_tab_password_info.xml
similarity index 92%
rename from chrome/android/java/res/layout/keyboard_accessory_sheet_tab_password_info.xml
rename to chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_sheet_tab_password_info.xml
index c7b849e1..053f28bd 100644
--- a/chrome/android/java/res/layout/keyboard_accessory_sheet_tab_password_info.xml
+++ b/chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_sheet_tab_password_info.xml
@@ -3,7 +3,7 @@
      Use of this source code is governed by a BSD-style license that can be
      found in the LICENSE file. -->
 
-<org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.PasswordAccessoryInfoView
+<org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.PasswordAccessoryInfoView
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:gravity="center_vertical|start"
     android:fillViewport="true"
@@ -55,4 +55,4 @@
         android:layout_marginBottom="@dimen/keyboard_accessory_sheet_padding"
         style="@style/InputChip" />
 
-</org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.PasswordAccessoryInfoView>
+</org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.PasswordAccessoryInfoView>
diff --git a/chrome/android/java/res/layout/keyboard_accessory_sheet_tab_title.xml b/chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_sheet_tab_title.xml
similarity index 100%
rename from chrome/android/java/res/layout/keyboard_accessory_sheet_tab_title.xml
rename to chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_sheet_tab_title.xml
diff --git a/chrome/android/java/res/layout/keyboard_accessory_suggestion.xml b/chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_suggestion.xml
similarity index 100%
rename from chrome/android/java/res/layout/keyboard_accessory_suggestion.xml
rename to chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_suggestion.xml
diff --git a/chrome/android/java/res/layout/keyboard_accessory_tabs.xml b/chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_tabs.xml
similarity index 85%
rename from chrome/android/java/res/layout/keyboard_accessory_tabs.xml
rename to chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_tabs.xml
index b1116b1a..0ff34f6f 100644
--- a/chrome/android/java/res/layout/keyboard_accessory_tabs.xml
+++ b/chrome/android/features/keyboard_accessory/internal/java/res/layout/keyboard_accessory_tabs.xml
@@ -3,7 +3,7 @@
      Use of this source code is governed by a BSD-style license that can be
      found in the LICENSE file. -->
 
-<org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutView
+<org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutView
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     app:tabIndicatorHeight="@dimen/divider_height"
diff --git a/chrome/android/java/res/layout/password_accessory_sheet.xml b/chrome/android/features/keyboard_accessory/internal/java/res/layout/password_accessory_sheet.xml
similarity index 100%
rename from chrome/android/java/res/layout/password_accessory_sheet.xml
rename to chrome/android/features/keyboard_accessory/internal/java/res/layout/password_accessory_sheet.xml
diff --git a/chrome/android/java/res/layout/password_accessory_sheet_label.xml b/chrome/android/features/keyboard_accessory/internal/java/res/layout/password_accessory_sheet_label.xml
similarity index 100%
rename from chrome/android/java/res/layout/password_accessory_sheet_label.xml
rename to chrome/android/features/keyboard_accessory/internal/java/res/layout/password_accessory_sheet_label.xml
diff --git a/chrome/android/java/res/layout/password_accessory_sheet_legacy_option.xml b/chrome/android/features/keyboard_accessory/internal/java/res/layout/password_accessory_sheet_legacy_option.xml
similarity index 100%
rename from chrome/android/java/res/layout/password_accessory_sheet_legacy_option.xml
rename to chrome/android/features/keyboard_accessory/internal/java/res/layout/password_accessory_sheet_legacy_option.xml
diff --git a/chrome/android/java/res/layout/password_accessory_sheet_option.xml b/chrome/android/features/keyboard_accessory/internal/java/res/layout/password_accessory_sheet_option.xml
similarity index 100%
rename from chrome/android/java/res/layout/password_accessory_sheet_option.xml
rename to chrome/android/features/keyboard_accessory/internal/java/res/layout/password_accessory_sheet_option.xml
diff --git a/chrome/android/features/keyboard_accessory/internal/java/res/values/dimens.xml b/chrome/android/features/keyboard_accessory/internal/java/res/values/dimens.xml
new file mode 100644
index 0000000..4e9b898
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/res/values/dimens.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2019 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. -->
+
+<resources xmlns:tools="http://schemas.android.com/tools">
+    <!-- Autofill keyboard accessory dimensions -->
+    <dimen name="keyboard_accessory_bar_item_height">36dp</dimen>
+    <dimen name="keyboard_accessory_bar_item_padding">8dp</dimen>
+    <dimen name="keyboard_accessory_half_padding">6dp</dimen>
+    <dimen name="keyboard_accessory_height">48dp</dimen>
+    <!--dimen name="keyboard_accessory_height_with_shadow">56dp</dimen-->
+    <dimen name="keyboard_accessory_image_top_padding">12dp</dimen>
+    <dimen name="keyboard_accessory_shadow">5dp</dimen>
+    <!--dimen name="keyboard_accessory_sheet_height">330dp</dimen-->
+    <dimen name="keyboard_accessory_sheet_padding">8dp</dimen>
+    <dimen name="keyboard_accessory_sheet_top_margin">16dp</dimen>
+    <dimen name="keyboard_accessory_suggestion_padding">16dp</dimen>
+    <dimen name="keyboard_accessory_suggestion_top_bottom_margin">8dp</dimen>
+    <dimen name="keyboard_accessory_suggestion_offset">12dp</dimen>
+    <dimen name="keyboard_accessory_suggestion_height">48dp</dimen>
+    <dimen name="keyboard_accessory_suggestion_icon_size">20dp</dimen>
+    <dimen name="keyboard_accessory_scroll_shadow_width">40dp</dimen>
+    <dimen name="keyboard_accessory_bar_item_cc_icon_width">32dp</dimen>
+    <dimen name="keyboard_accessory_tab_size">@dimen/keyboard_accessory_height</dimen>
+</resources>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AutofillKeyboardAccessoryBridge.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/AutofillKeyboardAccessoryViewBridge.java
similarity index 94%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AutofillKeyboardAccessoryBridge.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/AutofillKeyboardAccessoryViewBridge.java
index b8bd9ba..7fe8ae59 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AutofillKeyboardAccessoryBridge.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/AutofillKeyboardAccessoryViewBridge.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory;
+package org.chromium.chrome.browser.keyboard_accessory;
 
 import android.content.Context;
 import android.content.DialogInterface;
@@ -11,7 +11,7 @@
 import org.chromium.base.annotations.JNINamespace;
 import org.chromium.chrome.browser.ChromeActivity;
 import org.chromium.chrome.browser.ResourceId;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.PropertyProvider;
+import org.chromium.chrome.browser.keyboard_accessory.data.PropertyProvider;
 import org.chromium.components.autofill.AutofillDelegate;
 import org.chromium.components.autofill.AutofillSuggestion;
 import org.chromium.ui.DropdownItem;
@@ -23,7 +23,7 @@
  * --enable-autofill-keyboard-accessory-view is passed on the command line.
  */
 @JNINamespace("autofill")
-public class AutofillKeyboardAccessoryBridge
+public class AutofillKeyboardAccessoryViewBridge
         implements AutofillDelegate, DialogInterface.OnClickListener {
     private long mNativeAutofillKeyboardAccessory;
     private ManualFillingComponent mManualFillingComponent;
@@ -31,11 +31,11 @@
     private PropertyProvider<AutofillSuggestion[]> mChipProvider =
             new PropertyProvider<>(AccessoryAction.AUTOFILL_SUGGESTION);
 
-    private AutofillKeyboardAccessoryBridge() {}
+    private AutofillKeyboardAccessoryViewBridge() {}
 
     @CalledByNative
-    private static AutofillKeyboardAccessoryBridge create() {
-        return new AutofillKeyboardAccessoryBridge();
+    private static AutofillKeyboardAccessoryViewBridge create() {
+        return new AutofillKeyboardAccessoryViewBridge();
     }
 
     @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardExtensionViewResizer.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/KeyboardExtensionViewResizer.java
similarity index 71%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardExtensionViewResizer.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/KeyboardExtensionViewResizer.java
index 9381d44..fba4b59 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardExtensionViewResizer.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/KeyboardExtensionViewResizer.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory;
+package org.chromium.chrome.browser.keyboard_accessory;
 
 import android.support.annotation.Px;
 
@@ -10,8 +10,9 @@
 import org.chromium.chrome.browser.compositor.CompositorViewResizer;
 
 /**
- * This class is used by {@link ManualFillingMediator} to provide the combined height of
- * KeyboardAccessoryCoordinator and AccessorySheetCoordinator.
+ * This class holds the size of any extension to or even replacement for a keyboard. The height can
+ * be used to either compute an offset for bottom bars (e.g. CCTs or PWAs) or to push up the content
+ * area.
  */
 class KeyboardExtensionViewResizer implements CompositorViewResizer {
     private int mHeight;
@@ -32,9 +33,13 @@
         mObservers.removeObserver(observer);
     }
 
+    /**
+     * Sets a new extension height and notifies observers if its value changed.
+     * @param newKeyboardExtensionHeight The height in pixels.
+     */
     void setKeyboardExtensionHeight(@Px int newKeyboardExtensionHeight) {
         if (mHeight == newKeyboardExtensionHeight) return;
         mHeight = newKeyboardExtensionHeight;
         for (Observer observer : mObservers) observer.onHeightChanged(mHeight);
     }
-}
\ No newline at end of file
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingBridge.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentBridge.java
similarity index 87%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingBridge.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentBridge.java
index 38c1c5b..c002353c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingBridge.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentBridge.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory;
+package org.chromium.chrome.browser.keyboard_accessory;
 
 import android.graphics.Bitmap;
 import android.support.annotation.Px;
@@ -10,17 +10,16 @@
 import org.chromium.base.Callback;
 import org.chromium.base.VisibleForTesting;
 import org.chromium.base.annotations.CalledByNative;
-import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeActivity;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.AccessorySheetData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.Action;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.FooterCommand;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.UserInfo;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.PropertyProvider;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.AccessorySheetData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.Action;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.FooterCommand;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.UserInfo;
+import org.chromium.chrome.browser.keyboard_accessory.data.PropertyProvider;
 import org.chromium.content_public.browser.WebContents;
 import org.chromium.ui.base.WindowAndroid;
 
-class ManualFillingBridge {
+class ManualFillingComponentBridge {
     private final PropertyProvider<AccessorySheetData> mSheetDataProvider =
             new PropertyProvider<>();
     private final PropertyProvider<Action[]> mActionProvider =
@@ -29,7 +28,7 @@
     private final ChromeActivity mActivity;
     private long mNativeView;
 
-    private ManualFillingBridge(long nativeView, WindowAndroid windowAndroid) {
+    private ManualFillingComponentBridge(long nativeView, WindowAndroid windowAndroid) {
         mNativeView = nativeView;
         mActivity = (ChromeActivity) windowAndroid.getActivity().get();
         mManualFillingComponent = mActivity.getManualFillingComponent();
@@ -39,8 +38,9 @@
     }
 
     @CalledByNative
-    private static ManualFillingBridge create(long nativeView, WindowAndroid windowAndroid) {
-        return new ManualFillingBridge(nativeView, windowAndroid);
+    private static ManualFillingComponentBridge create(
+            long nativeView, WindowAndroid windowAndroid) {
+        return new ManualFillingComponentBridge(nativeView, windowAndroid);
     }
 
     @CalledByNative
@@ -162,4 +162,4 @@
 
     private static native void nativeCachePasswordSheetDataForTesting(
             WebContents webContents, String[] userNames, String[] passwords);
-}
\ No newline at end of file
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingCoordinator.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingCoordinator.java
similarity index 81%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingCoordinator.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingCoordinator.java
index 594a53d..11d4c9a6 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingCoordinator.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingCoordinator.java
@@ -2,19 +2,18 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory;
+package org.chromium.chrome.browser.keyboard_accessory;
 
 import android.view.View;
 import android.view.ViewStub;
 
 import org.chromium.base.VisibleForTesting;
-import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeFeatureList;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryCoordinator;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.PropertyProvider;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetCoordinator;
 import org.chromium.chrome.browser.compositor.CompositorViewResizer;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.data.PropertyProvider;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetCoordinator;
 import org.chromium.components.autofill.AutofillDelegate;
 import org.chromium.components.autofill.AutofillSuggestion;
 import org.chromium.ui.DropdownPopupWindow;
@@ -31,6 +30,8 @@
 class ManualFillingCoordinator implements ManualFillingComponent {
     private final ManualFillingMediator mMediator = new ManualFillingMediator();
 
+    public ManualFillingCoordinator() {}
+
     @Override
     public void initialize(WindowAndroid windowAndroid, ViewStub barStub, ViewStub sheetStub) {
         if (barStub == null || sheetStub == null) return; // The manual filling isn't needed.
@@ -55,27 +56,16 @@
         mMediator.destroy();
     }
 
-    /**
-     * Handles tapping on the Android back button.
-     * @return Whether tapping the back button dismissed the accessory sheet or not.
-     */
     @Override
     public boolean handleBackPress() {
         return mMediator.handleBackPress();
     }
 
-    /**
-     * Ensures that keyboard accessory and keyboard are hidden and reset.
-     */
     @Override
     public void dismiss() {
         mMediator.dismiss();
     }
 
-    /**
-     * Notifies the component that a popup window exists so it can be dismissed if necessary.
-     * @param popup A {@link DropdownPopupWindow} that might be dismissed later.
-     */
     @Override
     public void notifyPopupAvailable(DropdownPopupWindow popup) {
         mMediator.notifyPopupOpened(popup);
@@ -148,4 +138,4 @@
     ManualFillingMediator getMediatorForTesting() {
         return mMediator;
     }
-}
\ No newline at end of file
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingMediator.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator.java
similarity index 92%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingMediator.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator.java
index 3e00c01..7892826 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingMediator.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator.java
@@ -2,17 +2,17 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory;
+package org.chromium.chrome.browser.keyboard_accessory;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KEYBOARD_EXTENSION_STATE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.EXTENDING_KEYBOARD;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.FLOATING_BAR;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.FLOATING_SHEET;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.HIDDEN;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.REPLACING_KEYBOARD;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.WAITING_TO_REPLACE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.PORTRAIT_ORIENTATION;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.SHOW_WHEN_VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KEYBOARD_EXTENSION_STATE;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.EXTENDING_KEYBOARD;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.FLOATING_BAR;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.FLOATING_SHEET;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.HIDDEN;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.REPLACING_KEYBOARD;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.WAITING_TO_REPLACE;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.PORTRAIT_ORIENTATION;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.SHOW_WHEN_VISIBLE;
 
 import android.support.annotation.Nullable;
 import android.support.annotation.Px;
@@ -22,21 +22,11 @@
 
 import org.chromium.base.Supplier;
 import org.chromium.base.VisibleForTesting;
-import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeActivity;
 import org.chromium.chrome.browser.ChromeFeatureList;
 import org.chromium.chrome.browser.ChromeKeyboardVisibilityDelegate;
 import org.chromium.chrome.browser.ChromeWindow;
 import org.chromium.chrome.browser.InsetObserverView;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.StateProperty;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryCoordinator;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.Action;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.PropertyProvider;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetCoordinator;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.CreditCardAccessorySheetCoordinator;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.PasswordAccessorySheetCoordinator;
 import org.chromium.chrome.browser.compositor.CompositorViewHolder;
 import org.chromium.chrome.browser.compositor.CompositorViewResizer;
 import org.chromium.chrome.browser.compositor.layouts.Layout;
@@ -44,6 +34,15 @@
 import org.chromium.chrome.browser.compositor.layouts.SceneChangeObserver;
 import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager;
 import org.chromium.chrome.browser.fullscreen.FullscreenOptions;
+import org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState;
+import org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.StateProperty;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.Action;
+import org.chromium.chrome.browser.keyboard_accessory.data.PropertyProvider;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.CreditCardAccessorySheetCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.PasswordAccessorySheetCoordinator;
 import org.chromium.chrome.browser.tab.EmptyTabObserver;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tab.Tab.TabHidingType;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingMetricsRecorder.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMetricsRecorder.java
similarity index 98%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingMetricsRecorder.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMetricsRecorder.java
index 7b83a1de..49b56eb 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingMetricsRecorder.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMetricsRecorder.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory;
+package org.chromium.chrome.browser.keyboard_accessory;
 
 import org.chromium.base.metrics.RecordHistogram;
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingProperties.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingProperties.java
similarity index 69%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingProperties.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingProperties.java
index 538a23a..e018de6 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingProperties.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingProperties.java
@@ -2,18 +2,18 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory;
+package org.chromium.chrome.browser.keyboard_accessory;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.EXTENDING_KEYBOARD;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.FLOATING_BAR;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.FLOATING_SHEET;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.HIDDEN;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.REPLACING_KEYBOARD;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.WAITING_TO_REPLACE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.StateProperty.BAR;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.StateProperty.FLOATING;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.StateProperty.HIDDEN_SHEET;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.StateProperty.VISIBLE_SHEET;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.EXTENDING_KEYBOARD;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.FLOATING_BAR;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.FLOATING_SHEET;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.HIDDEN;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.REPLACING_KEYBOARD;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.WAITING_TO_REPLACE;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.StateProperty.BAR;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.StateProperty.FLOATING;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.StateProperty.HIDDEN_SHEET;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.StateProperty.VISIBLE_SHEET;
 
 import android.support.annotation.IntDef;
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingState.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingState.java
similarity index 88%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingState.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingState.java
index 698f8aa..f1cd6046 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingState.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingState.java
@@ -2,18 +2,18 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory;
+package org.chromium.chrome.browser.keyboard_accessory;
 
 import android.support.annotation.Nullable;
 
 import org.chromium.base.VisibleForTesting;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.CachedProviderAdapter;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.AccessorySheetData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.PropertyProvider;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.Provider;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.CreditCardAccessorySheetCoordinator;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.PasswordAccessorySheetCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.data.CachedProviderAdapter;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.AccessorySheetData;
+import org.chromium.chrome.browser.keyboard_accessory.data.PropertyProvider;
+import org.chromium.chrome.browser.keyboard_accessory.data.Provider;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.CreditCardAccessorySheetCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.PasswordAccessorySheetCoordinator;
 import org.chromium.content_public.browser.WebContents;
 import org.chromium.content_public.browser.WebContentsObserver;
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingStateCache.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingStateCache.java
similarity index 97%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingStateCache.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingStateCache.java
index b02b06b..3ae037a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingStateCache.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingStateCache.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory;
+package org.chromium.chrome.browser.keyboard_accessory;
 
 import android.support.annotation.Nullable;
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/README.md b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/README.md
similarity index 100%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/README.md
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/README.md
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryCoordinator.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryCoordinator.java
similarity index 92%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryCoordinator.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryCoordinator.java
index 63780c14..5226496 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryCoordinator.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryCoordinator.java
@@ -2,9 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component;
+package org.chromium.chrome.browser.keyboard_accessory.bar_component;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.VISIBLE;
 
 import android.support.annotation.Nullable;
 import android.support.annotation.Px;
@@ -13,11 +13,11 @@
 
 import org.chromium.base.VisibleForTesting;
 import org.chromium.chrome.browser.ChromeFeatureList;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BarItem;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryViewBinder.BarItemViewHolder;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.Provider;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BarItem;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryViewBinder.BarItemViewHolder;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.data.Provider;
+import org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutCoordinator;
 import org.chromium.components.autofill.AutofillDelegate;
 import org.chromium.components.autofill.AutofillSuggestion;
 import org.chromium.ui.DeferredViewStubInflationProvider;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryMediator.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMediator.java
similarity index 81%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryMediator.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMediator.java
index 0c6aaeb..f88c8b77 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryMediator.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMediator.java
@@ -2,33 +2,33 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component;
+package org.chromium.chrome.browser.keyboard_accessory.bar_component;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BAR_ITEMS;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BOTTOM_OFFSET_PX;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.KEYBOARD_TOGGLE_VISIBLE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.SHEET_TITLE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.SHOW_KEYBOARD_CALLBACK;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.TAB_LAYOUT_ITEM;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BAR_ITEMS;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BOTTOM_OFFSET_PX;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.KEYBOARD_TOGGLE_VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.SHEET_TITLE;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.SHOW_KEYBOARD_CALLBACK;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.TAB_LAYOUT_ITEM;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.VISIBLE;
 
 import android.support.annotation.Nullable;
 import android.support.annotation.Px;
 
 import org.chromium.base.VisibleForTesting;
 import org.chromium.chrome.browser.ChromeFeatureList;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryAction;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessorySheetTrigger;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingMetricsRecorder;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryCoordinator.TabSwitchingDelegate;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryCoordinator.VisibilityDelegate;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.AutofillBarItem;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BarItem;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.TabLayoutBarItem;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.Action;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.Provider;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryAction;
+import org.chromium.chrome.browser.keyboard_accessory.AccessorySheetTrigger;
+import org.chromium.chrome.browser.keyboard_accessory.ManualFillingMetricsRecorder;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryCoordinator.TabSwitchingDelegate;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryCoordinator.VisibilityDelegate;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.AutofillBarItem;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BarItem;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.TabLayoutBarItem;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.Action;
+import org.chromium.chrome.browser.keyboard_accessory.data.Provider;
+import org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutCoordinator;
 import org.chromium.components.autofill.AutofillDelegate;
 import org.chromium.components.autofill.AutofillSuggestion;
 import org.chromium.components.autofill.PopupItemId;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryMetricsRecorder.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMetricsRecorder.java
similarity index 92%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryMetricsRecorder.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMetricsRecorder.java
index d8ba950..ff9e39e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryMetricsRecorder.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMetricsRecorder.java
@@ -2,19 +2,19 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component;
+package org.chromium.chrome.browser.keyboard_accessory.bar_component;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BAR_ITEMS;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BAR_ITEMS;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.VISIBLE;
 
 import android.support.annotation.Nullable;
 
 import org.chromium.base.metrics.RecordHistogram;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryAction;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryBarContents;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingMetricsRecorder;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BarItem;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryAction;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryBarContents;
+import org.chromium.chrome.browser.keyboard_accessory.ManualFillingMetricsRecorder;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BarItem;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
 import org.chromium.ui.modelutil.ListModel;
 import org.chromium.ui.modelutil.ListObservable;
 import org.chromium.ui.modelutil.PropertyKey;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryModernView.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryModernView.java
similarity index 97%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryModernView.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryModernView.java
index 8998c15..cc1567e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryModernView.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryModernView.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component;
+package org.chromium.chrome.browser.keyboard_accessory.bar_component;
 
 import android.content.Context;
 import android.support.annotation.Px;
@@ -15,7 +15,7 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import org.chromium.chrome.R;
+import org.chromium.chrome.browser.keyboard_accessory.R;
 
 /**
  * The Accessory sitting above the keyboard and below the content area. It is used for autofill
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryModernViewBinder.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryModernViewBinder.java
similarity index 76%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryModernViewBinder.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryModernViewBinder.java
index 02d68a2..23c3058 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryModernViewBinder.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryModernViewBinder.java
@@ -2,23 +2,23 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component;
+package org.chromium.chrome.browser.keyboard_accessory.bar_component;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.KEYBOARD_TOGGLE_VISIBLE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.SHEET_TITLE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.SHOW_KEYBOARD_CALLBACK;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.TAB_LAYOUT_ITEM;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.KEYBOARD_TOGGLE_VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.SHEET_TITLE;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.SHOW_KEYBOARD_CALLBACK;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.TAB_LAYOUT_ITEM;
 
 import android.support.design.widget.TabLayout;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.chromium.chrome.R;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.AutofillBarItem;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BarItem;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.TabLayoutBarItem;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryViewBinder.BarItemViewHolder;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.R;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.AutofillBarItem;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BarItem;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.TabLayoutBarItem;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryViewBinder.BarItemViewHolder;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
 import org.chromium.ui.modelutil.PropertyKey;
 import org.chromium.ui.modelutil.PropertyModel;
 import org.chromium.ui.widget.ChipView;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryProperties.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryProperties.java
similarity index 94%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryProperties.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryProperties.java
index 9832caf1..801c5e0 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryProperties.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryProperties.java
@@ -2,15 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component;
+package org.chromium.chrome.browser.keyboard_accessory.bar_component;
 
 import android.support.annotation.IntDef;
 import android.support.annotation.Nullable;
 import android.support.design.widget.TabLayout;
 import android.support.v7.widget.RecyclerView;
 
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.Action;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutCoordinator.TabLayoutCallbacks;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.Action;
+import org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutCoordinator.TabLayoutCallbacks;
 import org.chromium.components.autofill.AutofillSuggestion;
 import org.chromium.ui.modelutil.ListModel;
 import org.chromium.ui.modelutil.PropertyModel;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryRecyclerViewMcp.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryRecyclerViewMcp.java
similarity index 95%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryRecyclerViewMcp.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryRecyclerViewMcp.java
index f704da6..5fe6f62 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryRecyclerViewMcp.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryRecyclerViewMcp.java
@@ -1,7 +1,7 @@
 // Copyright 2019 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.
-package org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component;
+package org.chromium.chrome.browser.keyboard_accessory.bar_component;
 
 import android.support.annotation.Nullable;
 
@@ -47,4 +47,4 @@
         super(model, itemViewTypeCallback, viewBinder);
         mViewRecycler = viewRecycler;
     }
-}
\ No newline at end of file
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryView.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryView.java
similarity index 97%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryView.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryView.java
index 080aa1f..3ba0672 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryView.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryView.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component;
+package org.chromium.chrome.browser.keyboard_accessory.bar_component;
 
 import static org.chromium.ui.base.LocalizationUtils.isLayoutRtl;
 
@@ -17,8 +17,8 @@
 import android.view.accessibility.AccessibilityEvent;
 import android.widget.LinearLayout;
 
-import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeFeatureList;
+import org.chromium.chrome.browser.keyboard_accessory.R;
 
 /**
  * The Accessory sitting above the keyboard and below the content area. It is used for autofill
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryViewBinder.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryViewBinder.java
similarity index 79%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryViewBinder.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryViewBinder.java
index 9acdc6c..981dff0 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryViewBinder.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryViewBinder.java
@@ -2,15 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component;
+package org.chromium.chrome.browser.keyboard_accessory.bar_component;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BAR_ITEMS;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BOTTOM_OFFSET_PX;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.KEYBOARD_TOGGLE_VISIBLE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.SHEET_TITLE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.SHOW_KEYBOARD_CALLBACK;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.TAB_LAYOUT_ITEM;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BAR_ITEMS;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BOTTOM_OFFSET_PX;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.KEYBOARD_TOGGLE_VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.SHEET_TITLE;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.SHOW_KEYBOARD_CALLBACK;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.TAB_LAYOUT_ITEM;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.VISIBLE;
 
 import android.os.Build;
 import android.support.annotation.LayoutRes;
@@ -21,9 +21,9 @@
 import android.view.ViewParent;
 import android.widget.TextView;
 
-import org.chromium.chrome.R;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BarItem;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.R;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BarItem;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
 import org.chromium.ui.modelutil.PropertyKey;
 import org.chromium.ui.modelutil.PropertyModel;
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/data/CachedProviderAdapter.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/data/CachedProviderAdapter.java
similarity index 96%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/data/CachedProviderAdapter.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/data/CachedProviderAdapter.java
index 48ee0eb..5e9ce46 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/data/CachedProviderAdapter.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/data/CachedProviderAdapter.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.data;
+package org.chromium.chrome.browser.keyboard_accessory.data;
 
 import android.support.annotation.Nullable;
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessoryPagerAdapter.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessoryPagerAdapter.java
similarity index 95%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessoryPagerAdapter.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessoryPagerAdapter.java
index 4ca988f..6b68905 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessoryPagerAdapter.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessoryPagerAdapter.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_component;
 
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
@@ -12,7 +12,7 @@
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.Tab;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.Tab;
 import org.chromium.ui.modelutil.ListModel;
 import org.chromium.ui.modelutil.ListModelChangeProcessor;
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetCoordinator.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetCoordinator.java
similarity index 83%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetCoordinator.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetCoordinator.java
index 050ed5a..a304d37 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetCoordinator.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetCoordinator.java
@@ -2,15 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_component;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.ACTIVE_TAB_INDEX;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.HEIGHT;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.NO_ACTIVE_TAB;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.PAGE_CHANGE_LISTENER;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.TABS;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.TOP_SHADOW_VISIBLE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.ACTIVE_TAB_INDEX;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.HEIGHT;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.NO_ACTIVE_TAB;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.PAGE_CHANGE_LISTENER;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.TABS;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.TOP_SHADOW_VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.VISIBLE;
 
 import android.support.annotation.Nullable;
 import android.support.annotation.Px;
@@ -20,7 +20,7 @@
 import android.view.ViewStub;
 
 import org.chromium.base.VisibleForTesting;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
 import org.chromium.ui.DeferredViewStubInflationProvider;
 import org.chromium.ui.ViewProvider;
 import org.chromium.ui.modelutil.LazyConstructionPropertyMcp;
@@ -153,4 +153,4 @@
     AccessorySheetMediator getMediatorForTesting() {
         return mMediator;
     }
-}
\ No newline at end of file
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetMediator.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetMediator.java
similarity index 82%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetMediator.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetMediator.java
index 39ca66e..72d9781 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetMediator.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetMediator.java
@@ -2,14 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_component;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.ACTIVE_TAB_INDEX;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.NO_ACTIVE_TAB;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.PAGE_CHANGE_LISTENER;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.TABS;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.TOP_SHADOW_VISIBLE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.ACTIVE_TAB_INDEX;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.NO_ACTIVE_TAB;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.PAGE_CHANGE_LISTENER;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.TABS;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.TOP_SHADOW_VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.VISIBLE;
 
 import android.support.annotation.Nullable;
 import android.support.annotation.Px;
@@ -17,7 +17,7 @@
 import android.support.v7.widget.RecyclerView;
 
 import org.chromium.base.VisibleForTesting;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
 import org.chromium.ui.modelutil.PropertyKey;
 import org.chromium.ui.modelutil.PropertyModel;
 import org.chromium.ui.modelutil.PropertyObservable;
@@ -132,4 +132,4 @@
     void setOnPageChangeListener(ViewPager.OnPageChangeListener onPageChangeListener) {
         mModel.set(PAGE_CHANGE_LISTENER, onPageChangeListener);
     }
-}
\ No newline at end of file
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetMetricsRecorder.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetMetricsRecorder.java
similarity index 70%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetMetricsRecorder.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetMetricsRecorder.java
index 6afc9ee..5312bf1 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetMetricsRecorder.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetMetricsRecorder.java
@@ -2,16 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_component;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.AccessorySheetTrigger.MANUAL_OPEN;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingMetricsRecorder.recordSheetTrigger;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.ACTIVE_TAB_INDEX;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.TABS;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.AccessorySheetTrigger.MANUAL_OPEN;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingMetricsRecorder.recordSheetTrigger;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.ACTIVE_TAB_INDEX;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.TABS;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.VISIBLE;
 
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessorySheetTrigger;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryTabType;
+import org.chromium.chrome.browser.keyboard_accessory.AccessorySheetTrigger;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryTabType;
 import org.chromium.ui.modelutil.PropertyModel;
 
 /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetProperties.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetProperties.java
similarity index 89%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetProperties.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetProperties.java
index e3ee9fc..4a7cabe 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetProperties.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetProperties.java
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_component;
 
 import android.support.v4.view.ViewPager;
 
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.Tab;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.Tab;
 import org.chromium.ui.modelutil.ListModel;
 import org.chromium.ui.modelutil.PropertyModel.ReadableObjectPropertyKey;
 import org.chromium.ui.modelutil.PropertyModel.WritableBooleanPropertyKey;
@@ -32,4 +32,4 @@
     static final int NO_ACTIVE_TAB = -1;
 
     private AccessorySheetProperties() {}
-}
\ No newline at end of file
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetView.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetView.java
similarity index 86%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetView.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetView.java
index a7154ef..7a473e5 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetView.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetView.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_component;
 
 import static org.chromium.ui.base.LocalizationUtils.isLayoutRtl;
 
@@ -14,6 +14,8 @@
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 
+import org.chromium.chrome.browser.keyboard_accessory.R;
+
 /**
  * Displays the data provided by the {@link AccessorySheetViewBinder}.
  */
@@ -31,8 +33,8 @@
     @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
-        mViewPager = findViewById(org.chromium.chrome.R.id.keyboard_accessory_sheet);
-        mTopShadow = findViewById(org.chromium.chrome.R.id.accessory_sheet_shadow);
+        mViewPager = findViewById(R.id.keyboard_accessory_sheet);
+        mTopShadow = findViewById(R.id.accessory_sheet_shadow);
 
         // Ensure that sub components of the sheet use the RTL direction:
         int layoutDirection = isLayoutRtl() ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetViewBinder.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetViewBinder.java
similarity index 72%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetViewBinder.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetViewBinder.java
index 48b6367..3785e43 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetViewBinder.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetViewBinder.java
@@ -2,22 +2,22 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_component;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.ACTIVE_TAB_INDEX;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.HEIGHT;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.NO_ACTIVE_TAB;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.PAGE_CHANGE_LISTENER;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.TABS;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.TOP_SHADOW_VISIBLE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.ACTIVE_TAB_INDEX;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.HEIGHT;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.NO_ACTIVE_TAB;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.PAGE_CHANGE_LISTENER;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.TABS;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.TOP_SHADOW_VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.VISIBLE;
 
 import android.os.Build;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewParent;
 
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
 import org.chromium.ui.modelutil.PropertyKey;
 import org.chromium.ui.modelutil.PropertyModel;
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabCoordinator.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabCoordinator.java
similarity index 90%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabCoordinator.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabCoordinator.java
index 4943301..ef8cbb5c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabCoordinator.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabCoordinator.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_tabs;
 
 import android.graphics.drawable.Drawable;
 import android.support.annotation.CallSuper;
@@ -11,8 +11,8 @@
 import android.support.v7.widget.RecyclerView;
 import android.view.ViewGroup;
 
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryTabType;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryTabType;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
 
 /**
  * This coordinator aims to be the base class for sheets to be added to the ManualFillingCoordinator
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabMetricsRecorder.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabMetricsRecorder.java
similarity index 76%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabMetricsRecorder.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabMetricsRecorder.java
index 861e720..891eb93 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabMetricsRecorder.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabMetricsRecorder.java
@@ -2,15 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_tabs;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingMetricsRecorder.getHistogramForType;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece.Type.PASSWORD_INFO;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece.getType;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingMetricsRecorder.getHistogramForType;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece.Type.PASSWORD_INFO;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece.getType;
 
 import org.chromium.base.metrics.RecordHistogram;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryTabType;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.UserInfo;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryTabType;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.UserInfo;
 import org.chromium.ui.modelutil.ListModel;
 
 /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabModel.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabModel.java
similarity index 90%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabModel.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabModel.java
index 0e18239..a23ae12 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabModel.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabModel.java
@@ -2,12 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_tabs;
 
 import android.support.annotation.IntDef;
 import android.support.v7.widget.RecyclerView;
 
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.AccessorySheetData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.AccessorySheetData;
 import org.chromium.ui.modelutil.ListModel;
 
 import java.lang.annotation.Retention;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabViewBinder.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabViewBinder.java
similarity index 92%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabViewBinder.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabViewBinder.java
index 2df32cbf..1177a6f 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabViewBinder.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabViewBinder.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_tabs;
 
 import android.support.annotation.LayoutRes;
 import android.support.annotation.Nullable;
@@ -14,9 +14,9 @@
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
-import org.chromium.chrome.R;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece;
+import org.chromium.chrome.browser.keyboard_accessory.R;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece;
 import org.chromium.ui.modelutil.ListModel;
 
 /**
@@ -101,4 +101,4 @@
         view.setItemAnimator(null);
         if (scrollListener != null) view.addOnScrollListener(scrollListener);
     }
-}
\ No newline at end of file
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/CreditCardAccessorySheetCoordinator.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/CreditCardAccessorySheetCoordinator.java
similarity index 89%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/CreditCardAccessorySheetCoordinator.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/CreditCardAccessorySheetCoordinator.java
index d7c27f9..d4a0519 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/CreditCardAccessorySheetCoordinator.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/CreditCardAccessorySheetCoordinator.java
@@ -2,15 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_tabs;
 
 import android.content.Context;
 import android.support.annotation.Nullable;
 import android.support.v7.content.res.AppCompatResources;
 import android.support.v7.widget.RecyclerView;
 
-import org.chromium.chrome.R;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryTabType;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryTabType;
+import org.chromium.chrome.browser.keyboard_accessory.R;
 
 /**
  * This component is a tab that can be added to the ManualFillingCoordinator. This tab
@@ -36,4 +36,4 @@
 
     @Override
     public void onTabShown() {}
-}
\ No newline at end of file
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessoryInfoView.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessoryInfoView.java
similarity index 95%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessoryInfoView.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessoryInfoView.java
index 7fc0b2e..346f968 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessoryInfoView.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessoryInfoView.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_tabs;
 
 import android.content.Context;
 import android.graphics.Bitmap;
@@ -17,7 +17,7 @@
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 
-import org.chromium.chrome.R;
+import org.chromium.chrome.browser.keyboard_accessory.R;
 import org.chromium.ui.widget.ChipView;
 
 /**
@@ -84,4 +84,4 @@
     ChipView getPassword() {
         return mPassword;
     }
-}
\ No newline at end of file
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetCoordinator.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetCoordinator.java
similarity index 91%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetCoordinator.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetCoordinator.java
index 23b8ecdb..0af7662 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetCoordinator.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetCoordinator.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_tabs;
 
 import android.content.Context;
 import android.graphics.drawable.Drawable;
@@ -12,12 +12,12 @@
 import android.view.ViewGroup;
 
 import org.chromium.base.VisibleForTesting;
-import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeFeatureList;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryTabType;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.AccessorySheetData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.Provider;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryTabType;
+import org.chromium.chrome.browser.keyboard_accessory.R;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.AccessorySheetData;
+import org.chromium.chrome.browser.keyboard_accessory.data.Provider;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece;
 import org.chromium.ui.modelutil.ListModel;
 import org.chromium.ui.modelutil.RecyclerViewAdapter;
 import org.chromium.ui.modelutil.SimpleRecyclerViewMcp;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetMediator.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetMediator.java
similarity index 70%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetMediator.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetMediator.java
index 1ee9255..ae17561a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetMediator.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetMediator.java
@@ -2,18 +2,18 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_tabs;
 
 import org.chromium.chrome.browser.ChromeFeatureList;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryAction;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryTabType;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingMetricsRecorder;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.AccessorySheetData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.FooterCommand;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.UserInfo;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.Provider;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece.Type;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryAction;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryTabType;
+import org.chromium.chrome.browser.keyboard_accessory.ManualFillingMetricsRecorder;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.AccessorySheetData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.FooterCommand;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.UserInfo;
+import org.chromium.chrome.browser.keyboard_accessory.data.Provider;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece.Type;
 import org.chromium.ui.modelutil.PropertyModel;
 import org.chromium.ui.modelutil.PropertyModelChangeProcessor;
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetModernViewBinder.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetModernViewBinder.java
similarity index 87%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetModernViewBinder.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetModernViewBinder.java
index c9980d9..014a9af9 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetModernViewBinder.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetModernViewBinder.java
@@ -2,16 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_tabs;
 
 import android.support.v7.widget.RecyclerView;
 import android.text.method.PasswordTransformationMethod;
 import android.view.ViewGroup;
 
-import org.chromium.chrome.R;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.AccessorySheetTabViewBinder.ElementViewHolder;
+import org.chromium.chrome.browser.keyboard_accessory.R;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabViewBinder.ElementViewHolder;
 import org.chromium.ui.modelutil.ListModel;
 import org.chromium.ui.widget.ChipView;
 
@@ -72,4 +72,4 @@
         view.setAdapter(PasswordAccessorySheetCoordinator.createModernAdapter(model));
         view.addItemDecoration(new PasswordAccessoryInfoView.DynamicBottomSpacer());
     }
-}
\ No newline at end of file
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewBinder.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewBinder.java
similarity index 92%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewBinder.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewBinder.java
index 9b5e8d522..d33e000a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewBinder.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewBinder.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_tabs;
 
 import static org.chromium.ui.base.LocalizationUtils.isLayoutRtl;
 
@@ -20,11 +20,11 @@
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
-import org.chromium.chrome.R;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.FooterCommand;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.AccessorySheetTabViewBinder.ElementViewHolder;
+import org.chromium.chrome.browser.keyboard_accessory.R;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.FooterCommand;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabViewBinder.ElementViewHolder;
 import org.chromium.ui.modelutil.ListModel;
 
 /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutCoordinator.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutCoordinator.java
similarity index 91%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutCoordinator.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutCoordinator.java
index 6db8d37..2db5e69 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutCoordinator.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutCoordinator.java
@@ -2,17 +2,17 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component;
+package org.chromium.chrome.browser.keyboard_accessory.tab_layout_component;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.ACTIVE_TAB;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.TABS;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.TAB_SELECTION_CALLBACKS;
+import static org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.ACTIVE_TAB;
+import static org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.TABS;
+import static org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.TAB_SELECTION_CALLBACKS;
 
 import android.support.design.widget.TabLayout;
 import android.support.v4.view.ViewPager;
 
 import org.chromium.base.VisibleForTesting;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryCoordinator;
 import org.chromium.ui.modelutil.ListModel;
 import org.chromium.ui.modelutil.ListModelChangeProcessor;
 import org.chromium.ui.modelutil.PropertyModel;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutMediator.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutMediator.java
similarity index 85%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutMediator.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutMediator.java
index 8a74c3f..2ff72be 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutMediator.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutMediator.java
@@ -2,20 +2,20 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component;
+package org.chromium.chrome.browser.keyboard_accessory.tab_layout_component;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.ACTIVE_TAB;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.TABS;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.TAB_SELECTION_CALLBACKS;
+import static org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.ACTIVE_TAB;
+import static org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.TABS;
+import static org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.TAB_SELECTION_CALLBACKS;
 
 import android.support.annotation.Nullable;
 import android.support.design.widget.TabLayout;
 import android.support.v4.view.ViewPager;
 
 import org.chromium.base.VisibleForTesting;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryCoordinator;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutCoordinator.AccessoryTabObserver;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutCoordinator.AccessoryTabObserver;
 import org.chromium.ui.modelutil.PropertyKey;
 import org.chromium.ui.modelutil.PropertyModel;
 import org.chromium.ui.modelutil.PropertyObservable;
@@ -151,4 +151,4 @@
 
         return tabLayoutPosition;
     }
-}
\ No newline at end of file
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutProperties.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutProperties.java
similarity index 86%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutProperties.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutProperties.java
index aabf68e1b..4d164bd 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutProperties.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutProperties.java
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component;
+package org.chromium.chrome.browser.keyboard_accessory.tab_layout_component;
 
 import android.support.design.widget.TabLayout;
 
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
 import org.chromium.ui.modelutil.ListModel;
 import org.chromium.ui.modelutil.PropertyModel.ReadableObjectPropertyKey;
 import org.chromium.ui.modelutil.PropertyModel.WritableObjectPropertyKey;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutView.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutView.java
similarity index 96%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutView.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutView.java
index cf29eaae..72375c9 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutView.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutView.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component;
+package org.chromium.chrome.browser.keyboard_accessory.tab_layout_component;
 
 import android.content.Context;
 import android.graphics.drawable.Drawable;
@@ -12,7 +12,7 @@
 import android.support.v4.graphics.drawable.DrawableCompat;
 import android.util.AttributeSet;
 
-import org.chromium.chrome.R;
+import org.chromium.chrome.browser.keyboard_accessory.R;
 
 /**
  * A {@link TabLayout} containing the tabs in the keyboard accessory.
@@ -105,4 +105,4 @@
         TabLayout.Tab tab = getTabAt(i);
         if (tab != null) tab.setContentDescription(messageId);
     }
-}
\ No newline at end of file
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutViewBinder.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutViewBinder.java
similarity index 84%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutViewBinder.java
rename to chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutViewBinder.java
index e9a8a5df..3249add 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutViewBinder.java
+++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutViewBinder.java
@@ -2,16 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component;
+package org.chromium.chrome.browser.keyboard_accessory.tab_layout_component;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.ACTIVE_TAB;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.TABS;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.TAB_SELECTION_CALLBACKS;
+import static org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.ACTIVE_TAB;
+import static org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.TABS;
+import static org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.TAB_SELECTION_CALLBACKS;
 
 import android.support.design.widget.TabLayout;
 
-import org.chromium.chrome.R;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.R;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
 import org.chromium.ui.modelutil.ListModel;
 import org.chromium.ui.modelutil.ListModelChangeProcessor;
 import org.chromium.ui.modelutil.PropertyKey;
@@ -87,4 +87,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/android_keyboard_accessory_strings.grd b/chrome/android/features/keyboard_accessory/internal/java/strings/android_keyboard_accessory_strings.grd
new file mode 100644
index 0000000..6145470
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/android_keyboard_accessory_strings.grd
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- android_chrome_strings.grd contains strings for the keyboard accessory in Chrome for Android. -->
+<grit current_release="1" latest_public_release="0" output_all_resource_defines="false">
+  <outputs>
+    <output filename="values-am/android_chrome_keyboard_accessory_strings.xml" lang="am" type="android" />
+    <output filename="values-ar/android_chrome_keyboard_accessory_strings.xml" lang="ar" type="android" />
+    <output filename="values-bg/android_chrome_keyboard_accessory_strings.xml" lang="bg" type="android" />
+    <output filename="values-ca/android_chrome_keyboard_accessory_strings.xml" lang="ca" type="android" />
+    <output filename="values-cs/android_chrome_keyboard_accessory_strings.xml" lang="cs" type="android" />
+    <output filename="values-da/android_chrome_keyboard_accessory_strings.xml" lang="da" type="android" />
+    <output filename="values-de/android_chrome_keyboard_accessory_strings.xml" lang="de" type="android" />
+    <output filename="values-el/android_chrome_keyboard_accessory_strings.xml" lang="el" type="android" />
+    <output filename="values/android_chrome_keyboard_accessory_strings.xml" lang="en" type="android" />
+    <output filename="values-en-rGB/android_chrome_keyboard_accessory_strings.xml" lang="en-GB" type="android" />
+    <output filename="values-es/android_chrome_keyboard_accessory_strings.xml" lang="es" type="android" />
+    <output filename="values-es-rUS/android_chrome_keyboard_accessory_strings.xml" lang="es-419" type="android" />
+    <output filename="values-fa/android_chrome_keyboard_accessory_strings.xml" lang="fa" type="android" />
+    <output filename="values-fi/android_chrome_keyboard_accessory_strings.xml" lang="fi" type="android" />
+    <output filename="values-tl/android_chrome_keyboard_accessory_strings.xml" lang="fil" type="android" />
+    <output filename="values-fr/android_chrome_keyboard_accessory_strings.xml" lang="fr" type="android" />
+    <output filename="values-hi/android_chrome_keyboard_accessory_strings.xml" lang="hi" type="android" />
+    <output filename="values-hr/android_chrome_keyboard_accessory_strings.xml" lang="hr" type="android" />
+    <output filename="values-hu/android_chrome_keyboard_accessory_strings.xml" lang="hu" type="android" />
+    <output filename="values-in/android_chrome_keyboard_accessory_strings.xml" lang="id" type="android" />
+    <output filename="values-it/android_chrome_keyboard_accessory_strings.xml" lang="it" type="android" />
+    <output filename="values-iw/android_chrome_keyboard_accessory_strings.xml" lang="iw" type="android" />
+    <output filename="values-ja/android_chrome_keyboard_accessory_strings.xml" lang="ja" type="android" />
+    <output filename="values-ko/android_chrome_keyboard_accessory_strings.xml" lang="ko" type="android" />
+    <output filename="values-lt/android_chrome_keyboard_accessory_strings.xml" lang="lt" type="android" />
+    <output filename="values-lv/android_chrome_keyboard_accessory_strings.xml" lang="lv" type="android" />
+    <output filename="values-nl/android_chrome_keyboard_accessory_strings.xml" lang="nl" type="android" />
+    <output filename="values-nb/android_chrome_keyboard_accessory_strings.xml" lang="no" type="android" />
+    <output filename="values-pl/android_chrome_keyboard_accessory_strings.xml" lang="pl" type="android" />
+    <output filename="values-pt-rBR/android_chrome_keyboard_accessory_strings.xml" lang="pt-BR" type="android" />
+    <output filename="values-pt-rPT/android_chrome_keyboard_accessory_strings.xml" lang="pt-PT" type="android" />
+    <output filename="values-ro/android_chrome_keyboard_accessory_strings.xml" lang="ro" type="android" />
+    <output filename="values-ru/android_chrome_keyboard_accessory_strings.xml" lang="ru" type="android" />
+    <output filename="values-sk/android_chrome_keyboard_accessory_strings.xml" lang="sk" type="android" />
+    <output filename="values-sl/android_chrome_keyboard_accessory_strings.xml" lang="sl" type="android" />
+    <output filename="values-sr/android_chrome_keyboard_accessory_strings.xml" lang="sr" type="android" />
+    <output filename="values-sv/android_chrome_keyboard_accessory_strings.xml" lang="sv" type="android" />
+    <output filename="values-sw/android_chrome_keyboard_accessory_strings.xml" lang="sw" type="android" />
+    <output filename="values-th/android_chrome_keyboard_accessory_strings.xml" lang="th" type="android" />
+    <output filename="values-tr/android_chrome_keyboard_accessory_strings.xml" lang="tr" type="android" />
+    <output filename="values-uk/android_chrome_keyboard_accessory_strings.xml" lang="uk" type="android" />
+    <output filename="values-vi/android_chrome_keyboard_accessory_strings.xml" lang="vi" type="android" />
+    <output filename="values-zh-rCN/android_chrome_keyboard_accessory_strings.xml" lang="zh-CN" type="android" />
+    <output filename="values-zh-rTW/android_chrome_keyboard_accessory_strings.xml" lang="zh-TW" type="android" />
+  </outputs>
+  <translations>
+    <file lang="am" path="translations/android_chrome_keyboard_accessory_strings_am.xtb" />
+    <file lang="ar" path="translations/android_chrome_keyboard_accessory_strings_ar.xtb" />
+    <file lang="bg" path="translations/android_chrome_keyboard_accessory_strings_bg.xtb" />
+    <file lang="bn" path="translations/android_chrome_keyboard_accessory_strings_bn.xtb" />
+    <file lang="ca" path="translations/android_chrome_keyboard_accessory_strings_ca.xtb" />
+    <file lang="cs" path="translations/android_chrome_keyboard_accessory_strings_cs.xtb" />
+    <file lang="da" path="translations/android_chrome_keyboard_accessory_strings_da.xtb" />
+    <file lang="de" path="translations/android_chrome_keyboard_accessory_strings_de.xtb" />
+    <file lang="el" path="translations/android_chrome_keyboard_accessory_strings_el.xtb" />
+    <file lang="en-GB" path="translations/android_chrome_keyboard_accessory_strings_en-GB.xtb" />
+    <file lang="es" path="translations/android_chrome_keyboard_accessory_strings_es.xtb" />
+    <file lang="es-419" path="translations/android_chrome_keyboard_accessory_strings_es-419.xtb" />
+    <file lang="et" path="translations/android_chrome_keyboard_accessory_strings_et.xtb" />
+    <file lang="fa" path="translations/android_chrome_keyboard_accessory_strings_fa.xtb" />
+    <file lang="fi" path="translations/android_chrome_keyboard_accessory_strings_fi.xtb" />
+    <file lang="fil" path="translations/android_chrome_keyboard_accessory_strings_fil.xtb" />
+    <file lang="fr" path="translations/android_chrome_keyboard_accessory_strings_fr.xtb" />
+    <file lang="gu" path="translations/android_chrome_keyboard_accessory_strings_gu.xtb" />
+    <file lang="hi" path="translations/android_chrome_keyboard_accessory_strings_hi.xtb" />
+    <file lang="hr" path="translations/android_chrome_keyboard_accessory_strings_hr.xtb" />
+    <file lang="hu" path="translations/android_chrome_keyboard_accessory_strings_hu.xtb" />
+    <file lang="id" path="translations/android_chrome_keyboard_accessory_strings_id.xtb" />
+    <file lang="it" path="translations/android_chrome_keyboard_accessory_strings_it.xtb" />
+    <file lang="iw" path="translations/android_chrome_keyboard_accessory_strings_iw.xtb" />
+    <file lang="ja" path="translations/android_chrome_keyboard_accessory_strings_ja.xtb" />
+    <file lang="ko" path="translations/android_chrome_keyboard_accessory_strings_ko.xtb" />
+    <file lang="kn" path="translations/android_chrome_keyboard_accessory_strings_kn.xtb" />
+    <file lang="lt" path="translations/android_chrome_keyboard_accessory_strings_lt.xtb" />
+    <file lang="lv" path="translations/android_chrome_keyboard_accessory_strings_lv.xtb" />
+    <file lang="ml" path="translations/android_chrome_keyboard_accessory_strings_ml.xtb" />
+    <file lang="mr" path="translations/android_chrome_keyboard_accessory_strings_mr.xtb" />
+    <file lang="ms" path="translations/android_chrome_keyboard_accessory_strings_ms.xtb" />
+    <file lang="nl" path="translations/android_chrome_keyboard_accessory_strings_nl.xtb" />
+    <file lang="no" path="translations/android_chrome_keyboard_accessory_strings_no.xtb" />
+    <file lang="pl" path="translations/android_chrome_keyboard_accessory_strings_pl.xtb" />
+    <file lang="pt-BR" path="translations/android_chrome_keyboard_accessory_strings_pt-BR.xtb" />
+    <file lang="pt-PT" path="translations/android_chrome_keyboard_accessory_strings_pt-PT.xtb" />
+    <file lang="ro" path="translations/android_chrome_keyboard_accessory_strings_ro.xtb" />
+    <file lang="ru" path="translations/android_chrome_keyboard_accessory_strings_ru.xtb" />
+    <file lang="sk" path="translations/android_chrome_keyboard_accessory_strings_sk.xtb" />
+    <file lang="sl" path="translations/android_chrome_keyboard_accessory_strings_sl.xtb" />
+    <file lang="sr" path="translations/android_chrome_keyboard_accessory_strings_sr.xtb" />
+    <file lang="sv" path="translations/android_chrome_keyboard_accessory_strings_sv.xtb" />
+    <file lang="sw" path="translations/android_chrome_keyboard_accessory_strings_sw.xtb" />
+    <file lang="ta" path="translations/android_chrome_keyboard_accessory_strings_ta.xtb" />
+    <file lang="te" path="translations/android_chrome_keyboard_accessory_strings_te.xtb" />
+    <file lang="th" path="translations/android_chrome_keyboard_accessory_strings_th.xtb" />
+    <file lang="tr" path="translations/android_chrome_keyboard_accessory_strings_tr.xtb" />
+    <file lang="uk" path="translations/android_chrome_keyboard_accessory_strings_uk.xtb" />
+    <file lang="vi" path="translations/android_chrome_keyboard_accessory_strings_vi.xtb" />
+    <file lang="zh-CN" path="translations/android_chrome_keyboard_accessory_strings_zh-CN.xtb" />
+    <file lang="zh-TW" path="translations/android_chrome_keyboard_accessory_strings_zh-TW.xtb" />
+  </translations>
+  <release allow_pseudo="false" seq="1">
+    <messages fallback_to_english="true">
+      <message name="IDS_AUTOFILL_KEYBOARD_ACCESSORY_CONTENT_DESCRIPTION" desc="The text announced by the screen reader when the autofill suggestions are shown.">
+        Passwords available
+      </message>
+      <message name="IDS_KEYBOARD_ACCESSORY_SHEET_HIDE" desc="Description for the active icon button that closes an accessory sheet and brings back the keyboard.">
+          Show keyboard
+      </message>
+      <message name="IDS_PASSWORD_GENERATION_ACCESSORY_BUTTON" desc="Text for the button used to generate a password.">
+          Suggest strong password
+      </message>
+      <message name="IDS_PASSWORD_GENERATION_ACCESSORY_BUTTON_SHORT" desc="Shortened text for the button used to generate a password. This is used for devices with small screen.">
+          Suggest password
+      </message>
+      <message name="IDS_PASSWORD_ACCESSORY_SHEET_TOGGLE" desc="Description for the icon button used to open and close the password accessory sheet.">
+          Show passwords
+      </message>
+      <message name="IDS_PASSWORD_ACCESSORY_SHEET_OPENED" desc="Accessibility announcement when opening a password bottom sheet containing saved credentials and options like managing and generating passwords.">
+          Showing saved passwords and password options
+      </message>
+    </messages>
+  </release>
+</grit>
diff --git a/chrome/android/java/strings/android_chrome_strings_grd/IDS_AUTOFILL_KEYBOARD_ACCESSORY_CONTENT_DESCRIPTION.png.sha1 b/chrome/android/features/keyboard_accessory/internal/java/strings/android_keyboard_accessory_strings_grd/IDS_AUTOFILL_KEYBOARD_ACCESSORY_CONTENT_DESCRIPTION.png.sha1
similarity index 100%
rename from chrome/android/java/strings/android_chrome_strings_grd/IDS_AUTOFILL_KEYBOARD_ACCESSORY_CONTENT_DESCRIPTION.png.sha1
rename to chrome/android/features/keyboard_accessory/internal/java/strings/android_keyboard_accessory_strings_grd/IDS_AUTOFILL_KEYBOARD_ACCESSORY_CONTENT_DESCRIPTION.png.sha1
diff --git a/chrome/android/java/strings/android_chrome_strings_grd/IDS_KEYBOARD_ACCESSORY_SHEET_HIDE.png.sha1 b/chrome/android/features/keyboard_accessory/internal/java/strings/android_keyboard_accessory_strings_grd/IDS_KEYBOARD_ACCESSORY_SHEET_HIDE.png.sha1
similarity index 100%
rename from chrome/android/java/strings/android_chrome_strings_grd/IDS_KEYBOARD_ACCESSORY_SHEET_HIDE.png.sha1
rename to chrome/android/features/keyboard_accessory/internal/java/strings/android_keyboard_accessory_strings_grd/IDS_KEYBOARD_ACCESSORY_SHEET_HIDE.png.sha1
diff --git a/chrome/android/java/strings/android_chrome_strings_grd/IDS_PASSWORD_ACCESSORY_SHEET_OPENED.png.sha1 b/chrome/android/features/keyboard_accessory/internal/java/strings/android_keyboard_accessory_strings_grd/IDS_PASSWORD_ACCESSORY_SHEET_OPENED.png.sha1
similarity index 100%
rename from chrome/android/java/strings/android_chrome_strings_grd/IDS_PASSWORD_ACCESSORY_SHEET_OPENED.png.sha1
rename to chrome/android/features/keyboard_accessory/internal/java/strings/android_keyboard_accessory_strings_grd/IDS_PASSWORD_ACCESSORY_SHEET_OPENED.png.sha1
diff --git a/chrome/android/java/strings/android_chrome_strings_grd/IDS_PASSWORD_ACCESSORY_SHEET_TOGGLE.png.sha1 b/chrome/android/features/keyboard_accessory/internal/java/strings/android_keyboard_accessory_strings_grd/IDS_PASSWORD_ACCESSORY_SHEET_TOGGLE.png.sha1
similarity index 100%
rename from chrome/android/java/strings/android_chrome_strings_grd/IDS_PASSWORD_ACCESSORY_SHEET_TOGGLE.png.sha1
rename to chrome/android/features/keyboard_accessory/internal/java/strings/android_keyboard_accessory_strings_grd/IDS_PASSWORD_ACCESSORY_SHEET_TOGGLE.png.sha1
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_am.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_am.xtb
new file mode 100644
index 0000000..92406ec2
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_am.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="am">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ar.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ar.xtb
new file mode 100644
index 0000000..198ea62
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ar.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="ar">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_bg.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_bg.xtb
new file mode 100644
index 0000000..6681995
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_bg.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="bg">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_bn.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_bn.xtb
new file mode 100644
index 0000000..eca68d46
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_bn.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="bn">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ca.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ca.xtb
new file mode 100644
index 0000000..71cdd772
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ca.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="ca">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_cs.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_cs.xtb
new file mode 100644
index 0000000..dc153a85
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_cs.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="cs">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_da.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_da.xtb
new file mode 100644
index 0000000..1256832
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_da.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="da">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_de.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_de.xtb
new file mode 100644
index 0000000..43dd909
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_de.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="de">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_el.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_el.xtb
new file mode 100644
index 0000000..1b09664
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_el.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="el">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_en-GB.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_en-GB.xtb
new file mode 100644
index 0000000..12c3fa00
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_en-GB.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="en-GB">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_es-419.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_es-419.xtb
new file mode 100644
index 0000000..b652ed0
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_es-419.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="es-419">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_es.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_es.xtb
new file mode 100644
index 0000000..4d4f400
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_es.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="es">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_et.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_et.xtb
new file mode 100644
index 0000000..ab777bc5
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_et.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="et">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_fa.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_fa.xtb
new file mode 100644
index 0000000..4cff15d
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_fa.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="fa">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_fi.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_fi.xtb
new file mode 100644
index 0000000..60ba9aa
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_fi.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="fi">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_fil.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_fil.xtb
new file mode 100644
index 0000000..8f6a880
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_fil.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="fil">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_fr.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_fr.xtb
new file mode 100644
index 0000000..bf48975a
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_fr.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="fr">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_gu.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_gu.xtb
new file mode 100644
index 0000000..7969d06
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_gu.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="gu">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_hi.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_hi.xtb
new file mode 100644
index 0000000..279503cd
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_hi.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="hi">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_hr.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_hr.xtb
new file mode 100644
index 0000000..9ec62af
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_hr.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="hr">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_hu.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_hu.xtb
new file mode 100644
index 0000000..bdc02ee
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_hu.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="hu">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_id.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_id.xtb
new file mode 100644
index 0000000..5f2882d
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_id.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="id">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_it.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_it.xtb
new file mode 100644
index 0000000..e7df702
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_it.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="it">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_iw.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_iw.xtb
new file mode 100644
index 0000000..a29d4ad
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_iw.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="iw">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ja.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ja.xtb
new file mode 100644
index 0000000..d8a3543
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ja.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="ja">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_kn.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_kn.xtb
new file mode 100644
index 0000000..4ecb12b
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_kn.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="kn">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ko.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ko.xtb
new file mode 100644
index 0000000..558b05b
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ko.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="ko">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_lt.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_lt.xtb
new file mode 100644
index 0000000..f20c0fa2
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_lt.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="lt">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_lv.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_lv.xtb
new file mode 100644
index 0000000..6f3afbc
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_lv.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="lv">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ml.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ml.xtb
new file mode 100644
index 0000000..e01197e
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ml.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="ml">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_mr.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_mr.xtb
new file mode 100644
index 0000000..b137924e
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_mr.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="mr">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ms.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ms.xtb
new file mode 100644
index 0000000..518685dd
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ms.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="ms">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_nl.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_nl.xtb
new file mode 100644
index 0000000..05ab957
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_nl.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="nl">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_no.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_no.xtb
new file mode 100644
index 0000000..ede4de30
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_no.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="no">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_pl.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_pl.xtb
new file mode 100644
index 0000000..1bf17bd5
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_pl.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="pl">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_pt-BR.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_pt-BR.xtb
new file mode 100644
index 0000000..de39dfa
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_pt-BR.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="pt-BR">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_pt-PT.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_pt-PT.xtb
new file mode 100644
index 0000000..0b98ee77
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_pt-PT.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="pt-PT">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ro.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ro.xtb
new file mode 100644
index 0000000..7129eb4
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ro.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="ro">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ru.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ru.xtb
new file mode 100644
index 0000000..6dfaa442
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ru.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="ru">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_sk.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_sk.xtb
new file mode 100644
index 0000000..202e515a
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_sk.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="sk">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_sl.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_sl.xtb
new file mode 100644
index 0000000..31b5a1a
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_sl.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="sl">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_sr.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_sr.xtb
new file mode 100644
index 0000000..984d7192
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_sr.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="sr">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_sv.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_sv.xtb
new file mode 100644
index 0000000..9a787b8
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_sv.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="sv">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_sw.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_sw.xtb
new file mode 100644
index 0000000..9aa61cb
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_sw.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="sw">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ta.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ta.xtb
new file mode 100644
index 0000000..c983c75
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_ta.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="ta">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_te.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_te.xtb
new file mode 100644
index 0000000..7affb9a
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_te.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="te">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_th.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_th.xtb
new file mode 100644
index 0000000..dbe6a601
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_th.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="th">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_tr.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_tr.xtb
new file mode 100644
index 0000000..d99480c
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_tr.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="tr">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_uk.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_uk.xtb
new file mode 100644
index 0000000..6e80099d
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_uk.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="uk">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_vi.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_vi.xtb
new file mode 100644
index 0000000..8a42ab1
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_vi.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="vi">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_zh-CN.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_zh-CN.xtb
new file mode 100644
index 0000000..c7d76e8
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_zh-CN.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="zh-CN">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_zh-TW.xtb b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_zh-TW.xtb
new file mode 100644
index 0000000..3e0c306
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/internal/java/strings/translations/android_chrome_keyboard_accessory_strings_zh-TW.xtb
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<!DOCTYPE translationbundle>
+<translationbundle lang="zh-TW">
+</translationbundle>
\ No newline at end of file
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AutofillKeyboardAccessoryIntegrationTest.java b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/AutofillKeyboardAccessoryIntegrationTest.java
similarity index 93%
rename from chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AutofillKeyboardAccessoryIntegrationTest.java
rename to chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/AutofillKeyboardAccessoryIntegrationTest.java
index 8c4f435..2f8fc040 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AutofillKeyboardAccessoryIntegrationTest.java
+++ b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/AutofillKeyboardAccessoryIntegrationTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory;
+package org.chromium.chrome.browser.keyboard_accessory;
 
 import static android.support.test.espresso.action.ViewActions.click;
 import static android.support.test.espresso.contrib.RecyclerViewActions.actionOnItem;
@@ -12,10 +12,10 @@
 
 import static org.junit.Assert.assertTrue;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingTestHelper.selectTabAtPosition;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingTestHelper.waitToBeHidden;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingTestHelper.whenDisplayed;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabTestHelper.isKeyboardAccessoryTabLayout;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingTestHelper.selectTabAtPosition;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingTestHelper.waitToBeHidden;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingTestHelper.whenDisplayed;
+import static org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabTestHelper.isKeyboardAccessoryTabLayout;
 
 import android.app.Activity;
 import android.support.test.filters.MediumTest;
@@ -30,7 +30,6 @@
 
 import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.RetryOnFailure;
-import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeFeatureList;
 import org.chromium.chrome.browser.ChromeSwitches;
 import org.chromium.chrome.browser.ChromeWindow;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/FakeKeyboard.java b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/FakeKeyboard.java
similarity index 98%
rename from chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/FakeKeyboard.java
rename to chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/FakeKeyboard.java
index ea42bf6..15bd9a8 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/FakeKeyboard.java
+++ b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/FakeKeyboard.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory;
+package org.chromium.chrome.browser.keyboard_accessory;
 
 import static org.chromium.content_public.browser.test.util.TestThreadUtils.runOnUiThreadBlocking;
 
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingIntegrationTest.java b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingIntegrationTest.java
similarity index 96%
rename from chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingIntegrationTest.java
rename to chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingIntegrationTest.java
index 7e87be4..f0c3a3b71 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingIntegrationTest.java
+++ b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingIntegrationTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory;
+package org.chromium.chrome.browser.keyboard_accessory;
 
 import static android.support.test.espresso.Espresso.onView;
 import static android.support.test.espresso.action.ViewActions.click;
@@ -20,10 +20,10 @@
 import static org.hamcrest.Matchers.not;
 import static org.junit.Assert.assertNotNull;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingTestHelper.selectTabAtPosition;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingTestHelper.waitToBeHidden;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingTestHelper.whenDisplayed;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabTestHelper.isKeyboardAccessoryTabLayout;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingTestHelper.selectTabAtPosition;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingTestHelper.waitToBeHidden;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingTestHelper.whenDisplayed;
+import static org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabTestHelper.isKeyboardAccessoryTabLayout;
 
 import android.support.test.espresso.Espresso;
 import android.support.test.filters.SmallTest;
@@ -38,7 +38,6 @@
 import org.chromium.base.task.PostTask;
 import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.Restriction;
-import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeFeatureList;
 import org.chromium.chrome.browser.ChromeSwitches;
 import org.chromium.chrome.browser.infobar.InfoBarIdentifier;
@@ -399,7 +398,8 @@
         // Create a simple, persistent snackbar and verify it's displayed.
         SnackbarManager manager = mActivityTestRule.getActivity().getSnackbarManager();
         PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT,
-                () -> manager.showSnackbar(Snackbar.make(kSnackbarText,
+                ()
+                        -> manager.showSnackbar(Snackbar.make(kSnackbarText,
                                 new SnackbarManager.SnackbarController() {},
                                 Snackbar.TYPE_PERSISTENT, Snackbar.UMA_TEST_SNACKBAR)));
         CriteriaHelper.pollUiThread(manager::isShowing);
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingTestHelper.java b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingTestHelper.java
similarity index 96%
rename from chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingTestHelper.java
rename to chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingTestHelper.java
index b978a24..37ea094 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingTestHelper.java
+++ b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingTestHelper.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory;
+package org.chromium.chrome.browser.keyboard_accessory;
 
 import static android.support.test.espresso.Espresso.onView;
 import static android.support.test.espresso.matcher.ViewMatchers.isAssignableFrom;
@@ -36,16 +36,15 @@
 import org.junit.Assert;
 
 import org.chromium.base.task.PostTask;
-import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeTabbedActivity;
 import org.chromium.chrome.browser.ChromeWindow;
 import org.chromium.chrome.browser.autofill.AutofillTestHelper;
 import org.chromium.chrome.browser.autofill.PersonalDataManager.AutofillProfile;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryCoordinator;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.AccessorySheetData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.PropertyProvider;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.PasswordAccessorySheetCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.AccessorySheetData;
+import org.chromium.chrome.browser.keyboard_accessory.data.PropertyProvider;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.PasswordAccessorySheetCoordinator;
 import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.content_public.browser.ImeAdapter;
 import org.chromium.content_public.browser.UiThreadTaskTraits;
@@ -283,7 +282,7 @@
      */
     public void cacheCredentials(String[] usernames, String[] passwords) {
         TestThreadUtils.runOnUiThreadBlocking(() -> {
-            ManualFillingBridge.cachePasswordSheetData(
+            ManualFillingComponentBridge.cachePasswordSheetData(
                     mActivityTestRule.getWebContents(), usernames, passwords);
         });
     }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingUiCaptureTest.java b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingUiCaptureTest.java
similarity index 92%
rename from chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingUiCaptureTest.java
rename to chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingUiCaptureTest.java
index 2c4a880..477dea6 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingUiCaptureTest.java
+++ b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingUiCaptureTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory;
+package org.chromium.chrome.browser.keyboard_accessory;
 
 import static android.support.test.espresso.Espresso.onView;
 import static android.support.test.espresso.contrib.RecyclerViewActions.actionOnItem;
@@ -11,10 +11,10 @@
 import static android.support.test.espresso.matcher.ViewMatchers.withParent;
 
 import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingTestHelper.scrollToLastElement;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingTestHelper.selectTabAtPosition;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingTestHelper.whenDisplayed;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabTestHelper.isKeyboardAccessoryTabLayout;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingTestHelper.scrollToLastElement;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingTestHelper.selectTabAtPosition;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingTestHelper.whenDisplayed;
+import static org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabTestHelper.isKeyboardAccessoryTabLayout;
 
 import android.support.test.filters.MediumTest;
 import android.support.v7.widget.RecyclerView;
@@ -27,7 +27,6 @@
 import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.Feature;
 import org.chromium.base.test.util.RetryOnFailure;
-import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeFeatureList;
 import org.chromium.chrome.browser.ChromeSwitches;
 import org.chromium.chrome.browser.test.ScreenShooter;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryModernViewTest.java b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryModernViewTest.java
similarity index 85%
rename from chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryModernViewTest.java
rename to chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryModernViewTest.java
index 6f124f1..001be32 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryModernViewTest.java
+++ b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryModernViewTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component;
+package org.chromium.chrome.browser.keyboard_accessory.bar_component;
 
 import static android.support.test.espresso.Espresso.onView;
 import static android.support.test.espresso.action.ViewActions.click;
@@ -14,12 +14,12 @@
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryAction.AUTOFILL_SUGGESTION;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BAR_ITEMS;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.KEYBOARD_TOGGLE_VISIBLE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.SHEET_TITLE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.TAB_LAYOUT_ITEM;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.AccessoryAction.AUTOFILL_SUGGESTION;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BAR_ITEMS;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.KEYBOARD_TOGGLE_VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.SHEET_TITLE;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.TAB_LAYOUT_ITEM;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.VISIBLE;
 import static org.chromium.chrome.test.util.ViewUtils.waitForView;
 
 import android.content.pm.ActivityInfo;
@@ -40,12 +40,12 @@
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeFeatureList;
 import org.chromium.chrome.browser.ChromeSwitches;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.AutofillBarItem;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BarItem;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.TabLayoutBarItem;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.Action;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.AutofillBarItem;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BarItem;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.TabLayoutBarItem;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.Action;
+import org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutCoordinator;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryViewTest.java b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryViewTest.java
similarity index 87%
rename from chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryViewTest.java
rename to chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryViewTest.java
index d9de169..4210274 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryViewTest.java
+++ b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryViewTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component;
+package org.chromium.chrome.browser.keyboard_accessory.bar_component;
 
 import static android.support.test.espresso.Espresso.onView;
 import static android.support.test.espresso.action.ViewActions.click;
@@ -17,11 +17,11 @@
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryAction.AUTOFILL_SUGGESTION;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryAction.GENERATE_PASSWORD_AUTOMATIC;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BAR_ITEMS;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.TAB_LAYOUT_ITEM;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.AccessoryAction.AUTOFILL_SUGGESTION;
+import static org.chromium.chrome.browser.keyboard_accessory.AccessoryAction.GENERATE_PASSWORD_AUTOMATIC;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BAR_ITEMS;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.TAB_LAYOUT_ITEM;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.VISIBLE;
 import static org.chromium.chrome.test.util.ViewUtils.VIEW_GONE;
 import static org.chromium.chrome.test.util.ViewUtils.VIEW_INVISIBLE;
 import static org.chromium.chrome.test.util.ViewUtils.VIEW_NULL;
@@ -39,13 +39,13 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.base.test.util.CommandLineFlags;
-import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeFeatureList;
 import org.chromium.chrome.browser.ChromeSwitches;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BarItem;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.TabLayoutBarItem;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.Action;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.R;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BarItem;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.TabLayoutBarItem;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.Action;
+import org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutCoordinator;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.chrome.test.util.browser.Features.DisableFeatures;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetViewTest.java b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetViewTest.java
similarity index 90%
rename from chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetViewTest.java
rename to chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetViewTest.java
index 8209dbe..5a682d0 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetViewTest.java
+++ b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetViewTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_component;
 
 import static android.support.test.espresso.Espresso.onView;
 import static android.support.test.espresso.assertion.ViewAssertions.doesNotExist;
@@ -18,12 +18,12 @@
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.ACTIVE_TAB_INDEX;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.HEIGHT;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.NO_ACTIVE_TAB;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.TABS;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.TOP_SHADOW_VISIBLE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.ACTIVE_TAB_INDEX;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.HEIGHT;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.NO_ACTIVE_TAB;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.TABS;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.TOP_SHADOW_VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.VISIBLE;
 import static org.chromium.chrome.test.util.ViewUtils.waitForView;
 
 import android.support.test.filters.MediumTest;
@@ -39,10 +39,10 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.base.test.util.CommandLineFlags;
-import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeSwitches;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryTabType;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.Tab;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryTabType;
+import org.chromium.chrome.browser.keyboard_accessory.R;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.Tab;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.chrome.test.util.ViewUtils;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabViewTest.java b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabViewTest.java
similarity index 90%
rename from chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabViewTest.java
rename to chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabViewTest.java
index 4aee97a..a3ea3f6f 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/AccessorySheetTabViewTest.java
+++ b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabViewTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_tabs;
 
 import static org.hamcrest.Matchers.instanceOf;
 import static org.hamcrest.Matchers.is;
@@ -23,13 +23,13 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.base.test.util.CommandLineFlags;
-import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeSwitches;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryTabType;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetCoordinator;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece.Type;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryTabType;
+import org.chromium.chrome.browser.keyboard_accessory.R;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece.Type;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.content_public.browser.test.util.Criteria;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessoryIntegrationTest.java b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessoryIntegrationTest.java
similarity index 91%
rename from chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessoryIntegrationTest.java
rename to chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessoryIntegrationTest.java
index 200f516..e5ae3ff 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessoryIntegrationTest.java
+++ b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessoryIntegrationTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_tabs;
 
 import static android.support.test.espresso.Espresso.onView;
 import static android.support.test.espresso.action.ViewActions.click;
@@ -13,9 +13,9 @@
 
 import static org.hamcrest.Matchers.containsString;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingTestHelper.isTransformed;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingTestHelper.selectTabAtPosition;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingTestHelper.whenDisplayed;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingTestHelper.isTransformed;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingTestHelper.selectTabAtPosition;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingTestHelper.whenDisplayed;
 
 import android.support.test.filters.SmallTest;
 
@@ -27,10 +27,10 @@
 
 import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.RetryOnFailure;
-import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeFeatureList;
 import org.chromium.chrome.browser.ChromeSwitches;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingTestHelper;
+import org.chromium.chrome.browser.keyboard_accessory.ManualFillingTestHelper;
+import org.chromium.chrome.browser.keyboard_accessory.R;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.chrome.test.util.browser.Features.DisableFeatures;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetModernViewTest.java b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetModernViewTest.java
similarity index 91%
rename from chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetModernViewTest.java
rename to chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetModernViewTest.java
index e935aa8..dd4fac4 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetModernViewTest.java
+++ b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetModernViewTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_tabs;
 
 import static org.hamcrest.Matchers.instanceOf;
 import static org.hamcrest.Matchers.is;
@@ -25,13 +25,13 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.base.test.util.CommandLineFlags;
-import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeSwitches;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryTabType;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.UserInfo;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetCoordinator;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryTabType;
+import org.chromium.chrome.browser.keyboard_accessory.R;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.UserInfo;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.content_public.browser.test.util.Criteria;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewTest.java b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewTest.java
similarity index 91%
rename from chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewTest.java
rename to chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewTest.java
index 6d53036..07558b5 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewTest.java
+++ b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_tabs;
 
 import static org.hamcrest.Matchers.instanceOf;
 import static org.hamcrest.Matchers.is;
@@ -26,13 +26,13 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.base.test.util.CommandLineFlags;
-import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeSwitches;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryTabType;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.UserInfo;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetCoordinator;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryTabType;
+import org.chromium.chrome.browser.keyboard_accessory.R;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.UserInfo;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
 import org.chromium.content_public.browser.test.util.Criteria;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutViewTest.java b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutViewTest.java
similarity index 89%
rename from chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutViewTest.java
rename to chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutViewTest.java
index cb30ab4..b7c95ac 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutViewTest.java
+++ b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutViewTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component;
+package org.chromium.chrome.browser.keyboard_accessory.tab_layout_component;
 
 import static android.support.test.espresso.Espresso.onView;
 import static android.support.test.espresso.assertion.ViewAssertions.doesNotExist;
@@ -14,9 +14,9 @@
 import static org.hamcrest.Matchers.instanceOf;
 import static org.hamcrest.core.AllOf.allOf;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.ACTIVE_TAB;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.TABS;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.TAB_SELECTION_CALLBACKS;
+import static org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.ACTIVE_TAB;
+import static org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.TABS;
+import static org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.TAB_SELECTION_CALLBACKS;
 import static org.chromium.chrome.test.util.ViewUtils.VIEW_GONE;
 import static org.chromium.chrome.test.util.ViewUtils.VIEW_INVISIBLE;
 import static org.chromium.chrome.test.util.ViewUtils.VIEW_NULL;
@@ -35,10 +35,10 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.base.test.util.CommandLineFlags;
-import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeSwitches;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryTabType;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryTabType;
+import org.chromium.chrome.browser.keyboard_accessory.R;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.chrome.test.ui.DummyUiActivity;
 import org.chromium.chrome.test.ui.DummyUiActivityTestCase;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabTestHelper.java b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabTestHelper.java
similarity index 87%
rename from chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabTestHelper.java
rename to chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabTestHelper.java
index 100bf221..67b600168 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabTestHelper.java
+++ b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabTestHelper.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component;
+package org.chromium.chrome.browser.keyboard_accessory.tab_layout_component;
 
 import static android.support.test.espresso.matcher.ViewMatchers.isAssignableFrom;
 
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingControllerTest.java b/chrome/android/features/keyboard_accessory/junit/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingControllerTest.java
similarity index 95%
rename from chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingControllerTest.java
rename to chrome/android/features/keyboard_accessory/junit/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingControllerTest.java
index a53d1e7..3510106 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingControllerTest.java
+++ b/chrome/android/features/keyboard_accessory/junit/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingControllerTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory;
+package org.chromium.chrome.browser.keyboard_accessory;
 
 import static android.content.res.Configuration.HARDKEYBOARDHIDDEN_UNDEFINED;
 
@@ -22,15 +22,15 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryAction.GENERATE_PASSWORD_AUTOMATIC;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KEYBOARD_EXTENSION_STATE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.EXTENDING_KEYBOARD;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.FLOATING_BAR;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.FLOATING_SHEET;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.HIDDEN;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.REPLACING_KEYBOARD;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.WAITING_TO_REPLACE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingProperties.SHOW_WHEN_VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.AccessoryAction.GENERATE_PASSWORD_AUTOMATIC;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KEYBOARD_EXTENSION_STATE;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.EXTENDING_KEYBOARD;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.FLOATING_BAR;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.FLOATING_SHEET;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.HIDDEN;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.REPLACING_KEYBOARD;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.KeyboardExtensionState.WAITING_TO_REPLACE;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingProperties.SHOW_WHEN_VISIBLE;
 import static org.chromium.chrome.browser.tab.Tab.INVALID_TAB_ID;
 import static org.chromium.chrome.browser.tabmodel.TabLaunchType.FROM_BROWSER_ACTIONS;
 import static org.chromium.chrome.browser.tabmodel.TabSelectionType.FROM_NEW;
@@ -61,16 +61,16 @@
 import org.chromium.chrome.browser.ChromeFeatureList;
 import org.chromium.chrome.browser.ChromeKeyboardVisibilityDelegate;
 import org.chromium.chrome.browser.ChromeWindow;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryCoordinator;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.AccessorySheetData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.Action;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.UserInfo;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.PropertyProvider;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetCoordinator;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.PasswordAccessorySheetCoordinator;
 import org.chromium.chrome.browser.compositor.CompositorViewHolder;
 import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.AccessorySheetData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.Action;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.UserInfo;
+import org.chromium.chrome.browser.keyboard_accessory.data.PropertyProvider;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.PasswordAccessorySheetCoordinator;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tab.Tab.TabHidingType;
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryControllerTest.java b/chrome/android/features/keyboard_accessory/junit/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryControllerTest.java
similarity index 93%
rename from chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryControllerTest.java
rename to chrome/android/features/keyboard_accessory/junit/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryControllerTest.java
index bbe307e..1ed9aca78 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/bar_component/KeyboardAccessoryControllerTest.java
+++ b/chrome/android/features/keyboard_accessory/junit/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryControllerTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component;
+package org.chromium.chrome.browser.keyboard_accessory.bar_component;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.notNullValue;
@@ -15,11 +15,11 @@
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryAction.AUTOFILL_SUGGESTION;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryAction.GENERATE_PASSWORD_AUTOMATIC;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BAR_ITEMS;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.SHEET_TITLE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.AccessoryAction.AUTOFILL_SUGGESTION;
+import static org.chromium.chrome.browser.keyboard_accessory.AccessoryAction.GENERATE_PASSWORD_AUTOMATIC;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BAR_ITEMS;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.SHEET_TITLE;
+import static org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.VISIBLE;
 
 import android.support.design.widget.TabLayout;
 
@@ -35,15 +35,15 @@
 import org.chromium.base.task.test.CustomShadowAsyncTask;
 import org.chromium.base.test.BaseRobolectricTestRunner;
 import org.chromium.chrome.browser.ChromeFeatureList;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryAction;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryBarContents;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingMetricsRecorder;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.AutofillBarItem;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BarItem;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.Action;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.PropertyProvider;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutCoordinator;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryAction;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryBarContents;
+import org.chromium.chrome.browser.keyboard_accessory.ManualFillingMetricsRecorder;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.AutofillBarItem;
+import org.chromium.chrome.browser.keyboard_accessory.bar_component.KeyboardAccessoryProperties.BarItem;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.Action;
+import org.chromium.chrome.browser.keyboard_accessory.data.PropertyProvider;
+import org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutCoordinator;
 import org.chromium.components.autofill.AutofillDelegate;
 import org.chromium.components.autofill.AutofillSuggestion;
 import org.chromium.ui.modelutil.ListObservable;
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetControllerTest.java b/chrome/android/features/keyboard_accessory/junit/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetControllerTest.java
similarity index 87%
rename from chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetControllerTest.java
rename to chrome/android/features/keyboard_accessory/junit/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetControllerTest.java
index 4d1c37f..f552a620 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_component/AccessorySheetControllerTest.java
+++ b/chrome/android/features/keyboard_accessory/junit/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetControllerTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_component;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.notNullValue;
@@ -12,11 +12,11 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.ACTIVE_TAB_INDEX;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.HEIGHT;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.TABS;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.TOP_SHADOW_VISIBLE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_component.AccessorySheetProperties.VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.ACTIVE_TAB_INDEX;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.HEIGHT;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.TABS;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.TOP_SHADOW_VISIBLE;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.VISIBLE;
 
 import android.support.v7.widget.RecyclerView;
 import android.view.ViewGroup;
@@ -32,9 +32,9 @@
 import org.chromium.base.metrics.test.ShadowRecordHistogram;
 import org.chromium.base.task.test.CustomShadowAsyncTask;
 import org.chromium.base.test.BaseRobolectricTestRunner;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessorySheetTrigger;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingMetricsRecorder;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.Tab;
+import org.chromium.chrome.browser.keyboard_accessory.AccessorySheetTrigger;
+import org.chromium.chrome.browser.keyboard_accessory.ManualFillingMetricsRecorder;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.Tab;
 import org.chromium.ui.modelutil.ListObservable;
 import org.chromium.ui.modelutil.PropertyKey;
 import org.chromium.ui.modelutil.PropertyModel;
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetControllerTest.java b/chrome/android/features/keyboard_accessory/junit/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetControllerTest.java
similarity index 85%
rename from chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetControllerTest.java
rename to chrome/android/features/keyboard_accessory/junit/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetControllerTest.java
index ded87ad..63840b1 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/sheet_tabs/PasswordAccessorySheetControllerTest.java
+++ b/chrome/android/features/keyboard_accessory/junit/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetControllerTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs;
+package org.chromium.chrome.browser.keyboard_accessory.sheet_tabs;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.Matchers.equalTo;
@@ -13,13 +13,13 @@
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingMetricsRecorder.UMA_KEYBOARD_ACCESSORY_ACTION_IMPRESSION;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingMetricsRecorder.getHistogramForType;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.AccessorySheetTabMetricsRecorder.UMA_KEYBOARD_ACCESSORY_SHEET_SUGGESTIONS;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece.Type.FOOTER_COMMAND;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece.Type.PASSWORD_INFO;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece.Type.TITLE;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece.getType;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingMetricsRecorder.UMA_KEYBOARD_ACCESSORY_ACTION_IMPRESSION;
+import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingMetricsRecorder.getHistogramForType;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabMetricsRecorder.UMA_KEYBOARD_ACCESSORY_SHEET_SUGGESTIONS;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece.Type.FOOTER_COMMAND;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece.Type.PASSWORD_INFO;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece.Type.TITLE;
+import static org.chromium.chrome.browser.keyboard_accessory.sheet_tabs.AccessorySheetTabModel.AccessorySheetDataPiece.getType;
 
 import android.support.v7.widget.RecyclerView;
 
@@ -36,14 +36,14 @@
 import org.chromium.base.task.test.CustomShadowAsyncTask;
 import org.chromium.base.test.BaseRobolectricTestRunner;
 import org.chromium.chrome.browser.ChromeFeatureList;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryAction;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryTabType;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.FallbackSheetType;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.AccessorySheetData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.FooterCommand;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData.UserInfo;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.PropertyProvider;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryAction;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryTabType;
+import org.chromium.chrome.browser.keyboard_accessory.FallbackSheetType;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.AccessorySheetData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.FooterCommand;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData.UserInfo;
+import org.chromium.chrome.browser.keyboard_accessory.data.PropertyProvider;
 import org.chromium.ui.modelutil.ListObservable;
 
 import java.util.HashMap;
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutControllerTest.java b/chrome/android/features/keyboard_accessory/junit/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutControllerTest.java
similarity index 92%
rename from chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutControllerTest.java
rename to chrome/android/features/keyboard_accessory/junit/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutControllerTest.java
index cefd9dc..173675c 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutControllerTest.java
+++ b/chrome/android/features/keyboard_accessory/junit/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutControllerTest.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component;
+package org.chromium.chrome.browser.keyboard_accessory.tab_layout_component;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.notNullValue;
@@ -12,8 +12,8 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.ACTIVE_TAB;
-import static org.chromium.chrome.browser.autofill.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.TABS;
+import static org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.ACTIVE_TAB;
+import static org.chromium.chrome.browser.keyboard_accessory.tab_layout_component.KeyboardAccessoryTabLayoutProperties.TABS;
 
 import android.support.design.widget.TabLayout;
 
@@ -28,7 +28,7 @@
 import org.chromium.base.task.test.CustomShadowAsyncTask;
 import org.chromium.base.test.BaseRobolectricTestRunner;
 import org.chromium.chrome.browser.ChromeFeatureList;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
 import org.chromium.ui.modelutil.ListObservable;
 import org.chromium.ui.modelutil.PropertyKey;
 import org.chromium.ui.modelutil.PropertyModel;
diff --git a/chrome/android/features/keyboard_accessory/public/BUILD.gn b/chrome/android/features/keyboard_accessory/public/BUILD.gn
new file mode 100644
index 0000000..d9371680
--- /dev/null
+++ b/chrome/android/features/keyboard_accessory/public/BUILD.gn
@@ -0,0 +1,29 @@
+# Copyright 2019 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.
+
+import("//build/config/android/rules.gni")
+
+android_library("java") {
+  deps = [
+    "//base:base_java",
+    "//chrome/android:chrome_public_java",
+    "//components/autofill/android:autofill_java",
+    "//third_party/android_deps:com_android_support_support_annotations_java",
+  ]
+  java_files = [
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponent.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/data/Provider.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/data/PropertyProvider.java",
+    "java/src/org/chromium/chrome/browser/keyboard_accessory/data/KeyboardAccessoryData.java",
+  ]
+  srcjar_deps = [ ":java_enums_srcjar" ]
+}
+
+java_cpp_enum("java_enums_srcjar") {
+  sources = [
+    "//chrome/browser/autofill/manual_filling_view_interface.h",
+    "//chrome/browser/password_manager/password_accessory_metrics_util.h",
+  ]
+  visibility = [ ":*" ]
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingComponent.java b/chrome/android/features/keyboard_accessory/public/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponent.java
similarity index 94%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingComponent.java
rename to chrome/android/features/keyboard_accessory/public/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponent.java
index 0d0c501..44d9fd00 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/ManualFillingComponent.java
+++ b/chrome/android/features/keyboard_accessory/public/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponent.java
@@ -2,14 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory;
+package org.chromium.chrome.browser.keyboard_accessory;
 
 import android.view.View;
 import android.view.ViewStub;
 
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.KeyboardAccessoryData;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.data.PropertyProvider;
 import org.chromium.chrome.browser.compositor.CompositorViewResizer;
+import org.chromium.chrome.browser.keyboard_accessory.data.KeyboardAccessoryData;
+import org.chromium.chrome.browser.keyboard_accessory.data.PropertyProvider;
 import org.chromium.components.autofill.AutofillDelegate;
 import org.chromium.components.autofill.AutofillSuggestion;
 import org.chromium.ui.DropdownPopupWindow;
@@ -126,4 +126,4 @@
      * @param view A {@link View} that is used to find the window root.
      */
     boolean isFillingViewShown(View view);
-}
\ No newline at end of file
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/data/KeyboardAccessoryData.java b/chrome/android/features/keyboard_accessory/public/java/src/org/chromium/chrome/browser/keyboard_accessory/data/KeyboardAccessoryData.java
similarity index 97%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/data/KeyboardAccessoryData.java
rename to chrome/android/features/keyboard_accessory/public/java/src/org/chromium/chrome/browser/keyboard_accessory/data/KeyboardAccessoryData.java
index 07a81b02..2a828fe 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/data/KeyboardAccessoryData.java
+++ b/chrome/android/features/keyboard_accessory/public/java/src/org/chromium/chrome/browser/keyboard_accessory/data/KeyboardAccessoryData.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.data;
+package org.chromium.chrome.browser.keyboard_accessory.data;
 
 import android.graphics.Bitmap;
 import android.graphics.drawable.Drawable;
@@ -12,9 +12,9 @@
 import android.view.ViewGroup;
 
 import org.chromium.base.Callback;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryAction;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.AccessoryTabType;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.FallbackSheetType;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryAction;
+import org.chromium.chrome.browser.keyboard_accessory.AccessoryTabType;
+import org.chromium.chrome.browser.keyboard_accessory.FallbackSheetType;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/data/PropertyProvider.java b/chrome/android/features/keyboard_accessory/public/java/src/org/chromium/chrome/browser/keyboard_accessory/data/PropertyProvider.java
similarity index 93%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/data/PropertyProvider.java
rename to chrome/android/features/keyboard_accessory/public/java/src/org/chromium/chrome/browser/keyboard_accessory/data/PropertyProvider.java
index cf8a122..1f75313 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/data/PropertyProvider.java
+++ b/chrome/android/features/keyboard_accessory/public/java/src/org/chromium/chrome/browser/keyboard_accessory/data/PropertyProvider.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.data;
+package org.chromium.chrome.browser.keyboard_accessory.data;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/data/Provider.java b/chrome/android/features/keyboard_accessory/public/java/src/org/chromium/chrome/browser/keyboard_accessory/data/Provider.java
similarity index 94%
rename from chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/data/Provider.java
rename to chrome/android/features/keyboard_accessory/public/java/src/org/chromium/chrome/browser/keyboard_accessory/data/Provider.java
index 1af67757..caa7aeac 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/data/Provider.java
+++ b/chrome/android/features/keyboard_accessory/public/java/src/org/chromium/chrome/browser/keyboard_accessory/data/Provider.java
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-package org.chromium.chrome.browser.autofill.keyboard_accessory.data;
+package org.chromium.chrome.browser.keyboard_accessory.data;
 
 /**
  * A provider notifies all registered {@link Observer}s about a changed object.
diff --git a/chrome/android/java/DEPS b/chrome/android/java/DEPS
index 3f29a70e..3101c15e 100644
--- a/chrome/android/java/DEPS
+++ b/chrome/android/java/DEPS
@@ -1,4 +1,7 @@
 include_rules = [
+  "-chrome/android/features/keyboard_accessory/internal"
+
+  "+components/embedder_support/android",
   "+components/embedder_support/android",
   "+components/autofill/android/java/src/org/chromium/components/autofill",
   "+components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler",
diff --git a/chrome/android/java/res/layout/main.xml b/chrome/android/java/res/layout/main.xml
index 6d2ede1d..5c8b7ef 100644
--- a/chrome/android/java/res/layout/main.xml
+++ b/chrome/android/java/res/layout/main.xml
@@ -30,14 +30,12 @@
         <ViewStub
             android:id="@+id/keyboard_accessory_stub"
             android:inflatedId="@+id/keyboard_accessory"
-            android:layout="@layout/keyboard_accessory"
             android:layout_height="@dimen/keyboard_accessory_height_with_shadow"
             android:layout_width="match_parent"
             android:layout_gravity="start|bottom"/>
 
         <ViewStub
             android:id="@+id/keyboard_accessory_sheet_stub"
-            android:layout="@layout/keyboard_accessory_sheet"
             android:layout_height="@dimen/keyboard_accessory_sheet_height"
             android:layout_width="match_parent"
             android:layout_gravity="start|bottom"/>
diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml
index c9b381c..42eedeb5 100644
--- a/chrome/android/java/res/values/dimens.xml
+++ b/chrome/android/java/res/values/dimens.xml
@@ -129,24 +129,8 @@
     <dimen name="overlay_panel_bar_height">56dp</dimen>
 
     <!-- Autofill keyboard accessory dimensions -->
-    <dimen name="keyboard_accessory_bar_item_height">36dp</dimen>
-    <dimen name="keyboard_accessory_bar_item_padding">8dp</dimen>
-    <dimen name="keyboard_accessory_half_padding">6dp</dimen>
-    <dimen name="keyboard_accessory_height">48dp</dimen>
     <dimen name="keyboard_accessory_height_with_shadow">56dp</dimen>
-    <dimen name="keyboard_accessory_image_top_padding">12dp</dimen>
-    <dimen name="keyboard_accessory_shadow">5dp</dimen>
     <dimen name="keyboard_accessory_sheet_height">330dp</dimen>
-    <dimen name="keyboard_accessory_sheet_padding">8dp</dimen>
-    <dimen name="keyboard_accessory_sheet_top_margin">16dp</dimen>
-    <dimen name="keyboard_accessory_suggestion_padding">16dp</dimen>
-    <dimen name="keyboard_accessory_suggestion_top_bottom_margin">8dp</dimen>
-    <dimen name="keyboard_accessory_suggestion_offset">12dp</dimen>
-    <dimen name="keyboard_accessory_suggestion_height">48dp</dimen>
-    <dimen name="keyboard_accessory_suggestion_icon_size">20dp</dimen>
-    <dimen name="keyboard_accessory_scroll_shadow_width">40dp</dimen>
-    <dimen name="keyboard_accessory_bar_item_cc_icon_width">32dp</dimen>
-    <dimen name="keyboard_accessory_tab_size">@dimen/keyboard_accessory_height</dimen>
 
     <!-- Password generation popup dimensions -->
     <dimen name="password_generation_text_size">14sp</dimen>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
index a51527f..258753a7 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -62,8 +62,6 @@
 import org.chromium.chrome.browser.appmenu.AppMenuHandler;
 import org.chromium.chrome.browser.appmenu.AppMenuObserver;
 import org.chromium.chrome.browser.appmenu.AppMenuPropertiesDelegate;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingComponent;
-import org.chromium.chrome.browser.autofill.keyboard_accessory.ManualFillingComponentFactory;
 import org.chromium.chrome.browser.banners.AppBannerManager;
 import org.chromium.chrome.browser.bookmarks.BookmarkModel;
 import org.chromium.chrome.browser.bookmarks.BookmarkUtils;
@@ -102,6 +100,8 @@
 import org.chromium.chrome.browser.infobar.InfoBarContainer;
 import org.chromium.chrome.browser.init.AsyncInitializationActivity;
 import org.chromium.chrome.browser.init.ProcessInitializationHandler;
+import org.chromium.chrome.browser.keyboard_accessory.ManualFillingComponent;
+import org.chromium.chrome.browser.keyboard_accessory.ManualFillingComponentFactory;
 import org.chromium.chrome.browser.locale.LocaleManager;
 import org.chromium.chrome.browser.media.PictureInPicture;
 import org.chromium.chrome.browser.media.PictureInPictureController;
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
index 30611c83..e601e8ad8 100644
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -463,9 +463,6 @@
       </message>
 
       <!-- Autofill and Payments preferences -->
-      <message name="IDS_AUTOFILL_KEYBOARD_ACCESSORY_CONTENT_DESCRIPTION" desc="The text announced by the screen reader when the autofill suggestions are shown.">
-        Passwords available
-      </message>
       <message name="IDS_PAYMENT_APPS_TITLE" desc="Title of the preference to list the payment apps on device.">
         Payment apps
       </message>
@@ -3977,24 +3974,6 @@
         Links to your favorite websites can be found on this page
       </message>
 
-      <!-- Password Accessory Strings -->
-      <message name="IDS_KEYBOARD_ACCESSORY_SHEET_HIDE" desc="Description for the active icon button that closes an accessory sheet and brings back the keyboard.">
-          Show keyboard
-      </message>
-      <message name="IDS_PASSWORD_GENERATION_ACCESSORY_BUTTON" desc="Text for the button used to generate a password.">
-          Suggest strong password
-      </message>
-      <message name="IDS_PASSWORD_GENERATION_ACCESSORY_BUTTON_SHORT" desc="Shortened text for the button used to generate a password. This is used for devices with small screen.">
-          Suggest password
-      </message>
-      <message name="IDS_PASSWORD_ACCESSORY_SHEET_TOGGLE" desc="Description for the icon button used to open and close the password accessory sheet.">
-          Show passwords
-      </message>
-      <message name="IDS_PASSWORD_ACCESSORY_SHEET_OPENED" desc="Accessibility announcement when opening a password bottom sheet containing saved credentials and options like managing and generating passwords.">
-          Showing saved passwords and password options
-      </message>
-
-
       <!-- Launcher Shortcuts -->
       <message name="IDS_DISABLED_INCOGNITO_LAUNCHER_SHORTCUT_MESSAGE" desc="Text for a toast displayed prompting the user to remove the disabled 'New incognito tab' app shortcut and recreate it.">
         Remove and recreate this shortcut
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/OWNERS b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/OWNERS
deleted file mode 100644
index 5c54721..0000000
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-file://chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/OWNERS
-
-# COMPONENT: UI>Browser>Autofill
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/OWNERS b/chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/OWNERS
deleted file mode 100644
index 5c54721..0000000
--- a/chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-file://chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/OWNERS
-
-# COMPONENT: UI>Browser>Autofill
diff --git a/chrome/browser/password_manager/password_accessory_metrics_util.h b/chrome/browser/password_manager/password_accessory_metrics_util.h
index e65267e..3158995f 100644
--- a/chrome/browser/password_manager/password_accessory_metrics_util.h
+++ b/chrome/browser/password_manager/password_accessory_metrics_util.h
@@ -11,8 +11,7 @@
 // These values are persisted to logs. Entries should not be renumbered and
 // numeric values should never be reused. Must be kept in sync with the enum
 // in enums.xml. A java IntDef@ is generated from this.
-// GENERATED_JAVA_ENUM_PACKAGE: (
-//   org.chromium.chrome.browser.autofill.keyboard_accessory)
+// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.keyboard_accessory
 enum class AccessoryBarContents {
   NO_CONTENTS = 0,   // Increased if none of the other buckets increases.
   ANY_CONTENTS = 1,  // Increased if least one of the other buckets increases.
@@ -26,8 +25,7 @@
 // These values are persisted to logs. Entries should not be renumbered and
 // numeric values should never be reused. Must be kept in sync with the enum
 // in enums.xml. A java IntDef@ is generated from this.
-// GENERATED_JAVA_ENUM_PACKAGE: (
-//   org.chromium.chrome.browser.autofill.keyboard_accessory)
+// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.keyboard_accessory
 enum class AccessorySheetTrigger {
   ANY_CLOSE = 0,     // Increased for every closure - manual or not.
   MANUAL_CLOSE = 1,  // Increased for every user-triggered closure.
@@ -39,8 +37,7 @@
 // These values are persisted to logs. Entries should not be renumbered and
 // numeric values should never be reused. Must be kept in sync with the enum
 // in enums.xml. A java IntDef@ is generated from this.
-// GENERATED_JAVA_ENUM_PACKAGE: (
-//   org.chromium.chrome.browser.autofill.keyboard_accessory)
+// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.keyboard_accessory
 enum class AccessoryTabType {
   ALL = 0,
   PASSWORDS = 1,
@@ -52,8 +49,7 @@
 // These values are persisted to logs. Entries should not be renumbered and
 // numeric values should never be reused. Must be kept in sync with the enum
 // in enums.xml. A java IntDef@ is generated from this.
-// GENERATED_JAVA_ENUM_PACKAGE: (
-//   org.chromium.chrome.browser.autofill.keyboard_accessory)
+// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.keyboard_accessory
 enum class AccessoryAction {
   GENERATE_PASSWORD_AUTOMATIC = 0,
   MANAGE_PASSWORDS = 1,
@@ -65,8 +61,7 @@
 // These values are persisted to logs. Entries should not be renumbered and
 // numeric values should never be reused. Must be kept in sync with the enum
 // in enums.xml. A java IntDef@ is generated from this.
-// GENERATED_JAVA_ENUM_PACKAGE: (
-//   org.chromium.chrome.browser.autofill.keyboard_accessory)
+// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.keyboard_accessory
 enum class AccessorySuggestionType {
   USERNAME = 0,
   PASSWORD = 1,
diff --git a/chrome/browser/ui/android/autofill/autofill_keyboard_accessory_view.cc b/chrome/browser/ui/android/autofill/autofill_keyboard_accessory_view.cc
index 298eb2d..3977276 100644
--- a/chrome/browser/ui/android/autofill/autofill_keyboard_accessory_view.cc
+++ b/chrome/browser/ui/android/autofill/autofill_keyboard_accessory_view.cc
@@ -14,7 +14,7 @@
 #include "chrome/browser/ui/autofill/autofill_popup_controller.h"
 #include "chrome/browser/ui/autofill/autofill_popup_layout_model.h"
 #include "components/autofill/core/browser/suggestion.h"
-#include "jni/AutofillKeyboardAccessoryBridge_jni.h"
+#include "jni/AutofillKeyboardAccessoryViewBridge_jni.h"
 #include "ui/android/view_android.h"
 #include "ui/android/window_android.h"
 #include "ui/base/resource/resource_bundle.h"
@@ -29,12 +29,12 @@
 AutofillKeyboardAccessoryView::AutofillKeyboardAccessoryView(
     AutofillPopupController* controller)
     : controller_(controller) {
-  java_object_.Reset(Java_AutofillKeyboardAccessoryBridge_create(
+  java_object_.Reset(Java_AutofillKeyboardAccessoryViewBridge_create(
       base::android::AttachCurrentThread()));
 }
 
 AutofillKeyboardAccessoryView::~AutofillKeyboardAccessoryView() {
-  Java_AutofillKeyboardAccessoryBridge_resetNativeViewPointer(
+  Java_AutofillKeyboardAccessoryViewBridge_resetNativeViewPointer(
       base::android::AttachCurrentThread(), java_object_);
 }
 
@@ -43,7 +43,7 @@
     bool should_limit_label_width) {
   ui::ViewAndroid* view_android = controller_->container_view();
   DCHECK(view_android);
-  Java_AutofillKeyboardAccessoryBridge_init(
+  Java_AutofillKeyboardAccessoryViewBridge_init(
       base::android::AttachCurrentThread(), java_object_,
       reinterpret_cast<intptr_t>(this),
       view_android->GetWindowAndroid()->GetJavaObject(),
@@ -51,14 +51,14 @@
 }
 
 void AutofillKeyboardAccessoryView::Hide() {
-  Java_AutofillKeyboardAccessoryBridge_dismiss(
+  Java_AutofillKeyboardAccessoryViewBridge_dismiss(
       base::android::AttachCurrentThread(), java_object_);
 }
 
 void AutofillKeyboardAccessoryView::Show() {
   JNIEnv* env = base::android::AttachCurrentThread();
   ScopedJavaLocalRef<jobjectArray> data_array =
-      Java_AutofillKeyboardAccessoryBridge_createAutofillSuggestionArray(
+      Java_AutofillKeyboardAccessoryViewBridge_createAutofillSuggestionArray(
           env, controller_->GetLineCount());
 
   size_t position = 0;
@@ -70,15 +70,15 @@
           controller_->layout_model().GetIconResourceID(suggestion.icon));
     }
 
-    Java_AutofillKeyboardAccessoryBridge_addToAutofillSuggestionArray(
+    Java_AutofillKeyboardAccessoryViewBridge_addToAutofillSuggestionArray(
         env, data_array, position++,
         ConvertUTF16ToJavaString(env, controller_->GetElidedValueAt(i)),
         ConvertUTF16ToJavaString(env, controller_->GetElidedLabelAt(i)),
         android_icon_id, suggestion.frontend_id,
         controller_->GetRemovalConfirmationText(i, nullptr, nullptr));
   }
-  Java_AutofillKeyboardAccessoryBridge_show(env, java_object_, data_array,
-                                            controller_->IsRTL());
+  Java_AutofillKeyboardAccessoryViewBridge_show(env, java_object_, data_array,
+                                                controller_->IsRTL());
 }
 
 void AutofillKeyboardAccessoryView::ConfirmDeletion(
@@ -87,7 +87,7 @@
     base::OnceClosure confirm_deletion) {
   JNIEnv* env = base::android::AttachCurrentThread();
   confirm_deletion_ = std::move(confirm_deletion);
-  Java_AutofillKeyboardAccessoryBridge_confirmDeletion(
+  Java_AutofillKeyboardAccessoryViewBridge_confirmDeletion(
       env, java_object_, ConvertUTF16ToJavaString(env, confirmation_title),
       ConvertUTF16ToJavaString(env, confirmation_body));
 }
diff --git a/chrome/browser/ui/android/autofill/autofill_keyboard_accessory_view.h b/chrome/browser/ui/android/autofill/autofill_keyboard_accessory_view.h
index df5f953..df9eb51 100644
--- a/chrome/browser/ui/android/autofill/autofill_keyboard_accessory_view.h
+++ b/chrome/browser/ui/android/autofill/autofill_keyboard_accessory_view.h
@@ -31,7 +31,7 @@
 
   // Implementation of AutofillKeyboardAccessoryAdapter::AccessoryView.
   void Initialize(unsigned int animation_duration_millis,
-                  bool should_limit_label_width) override;
+                  bool limit_label_width) override;
   void Hide() override;
   void Show() override;
   void ConfirmDeletion(const base::string16& confirmation_title,
diff --git a/chrome/browser/ui/android/passwords/manual_filling_view_android.cc b/chrome/browser/ui/android/passwords/manual_filling_view_android.cc
index bff7a9c..ed05d00 100644
--- a/chrome/browser/ui/android/passwords/manual_filling_view_android.cc
+++ b/chrome/browser/ui/android/passwords/manual_filling_view_android.cc
@@ -22,7 +22,7 @@
 #include "chrome/browser/password_manager/password_accessory_controller.h"
 #include "components/autofill/core/browser/accessory_sheet_data.h"
 #include "components/autofill/core/common/password_form.h"
-#include "jni/ManualFillingBridge_jni.h"
+#include "jni/ManualFillingComponentBridge_jni.h"
 #include "ui/android/view_android.h"
 #include "ui/android/window_android.h"
 #include "ui/gfx/android/java_bitmap.h"
@@ -40,15 +40,15 @@
   ui::ViewAndroid* view_android = controller_->container_view();
 
   DCHECK(view_android);
-  java_object_.Reset(Java_ManualFillingBridge_create(
+  java_object_.Reset(Java_ManualFillingComponentBridge_create(
       base::android::AttachCurrentThread(), reinterpret_cast<intptr_t>(this),
       view_android->GetWindowAndroid()->GetJavaObject()));
 }
 
 ManualFillingViewAndroid::~ManualFillingViewAndroid() {
   DCHECK(!java_object_.is_null());
-  Java_ManualFillingBridge_destroy(base::android::AttachCurrentThread(),
-                                   java_object_);
+  Java_ManualFillingComponentBridge_destroy(
+      base::android::AttachCurrentThread(), java_object_);
   java_object_.Reset(nullptr);
 }
 
@@ -57,28 +57,28 @@
   DCHECK(!java_object_.is_null());
 
   JNIEnv* env = base::android::AttachCurrentThread();
-  Java_ManualFillingBridge_onItemsAvailable(
+  Java_ManualFillingComponentBridge_onItemsAvailable(
       env, java_object_, ConvertAccessorySheetDataToJavaObject(env, data));
 }
 
 void ManualFillingViewAndroid::CloseAccessorySheet() {
-  Java_ManualFillingBridge_closeAccessorySheet(
+  Java_ManualFillingComponentBridge_closeAccessorySheet(
       base::android::AttachCurrentThread(), java_object_);
 }
 
 void ManualFillingViewAndroid::SwapSheetWithKeyboard() {
-  Java_ManualFillingBridge_swapSheetWithKeyboard(
+  Java_ManualFillingComponentBridge_swapSheetWithKeyboard(
       base::android::AttachCurrentThread(), java_object_);
 }
 
 void ManualFillingViewAndroid::ShowWhenKeyboardIsVisible() {
-  Java_ManualFillingBridge_showWhenKeyboardIsVisible(
+  Java_ManualFillingComponentBridge_showWhenKeyboardIsVisible(
       base::android::AttachCurrentThread(), java_object_);
 }
 
 void ManualFillingViewAndroid::Hide() {
-  Java_ManualFillingBridge_hide(base::android::AttachCurrentThread(),
-                                java_object_);
+  Java_ManualFillingComponentBridge_hide(base::android::AttachCurrentThread(),
+                                         java_object_);
 }
 
 void ManualFillingViewAndroid::OnAutomaticGenerationStatusChanged(
@@ -87,8 +87,8 @@
     return;
 
   JNIEnv* env = base::android::AttachCurrentThread();
-  Java_ManualFillingBridge_onAutomaticGenerationStatusChanged(env, java_object_,
-                                                              available);
+  Java_ManualFillingComponentBridge_onAutomaticGenerationStatusChanged(
+      env, java_object_, available);
 }
 
 void ManualFillingViewAndroid::OnFaviconRequested(
@@ -141,16 +141,16 @@
     JNIEnv* env,
     const AccessorySheetData& tab_data) {
   ScopedJavaLocalRef<jobject> j_tab_data =
-      Java_ManualFillingBridge_createAccessorySheetData(
+      Java_ManualFillingComponentBridge_createAccessorySheetData(
           env, static_cast<int>(tab_data.get_sheet_type()),
           ConvertUTF16ToJavaString(env, tab_data.title()));
 
   for (const UserInfo& user_info : tab_data.user_info_list()) {
     ScopedJavaLocalRef<jobject> j_user_info =
-        Java_ManualFillingBridge_addUserInfoToAccessorySheetData(
+        Java_ManualFillingComponentBridge_addUserInfoToAccessorySheetData(
             env, java_object_, j_tab_data);
     for (const UserInfo::Field& field : user_info.fields()) {
-      Java_ManualFillingBridge_addFieldToUserInfo(
+      Java_ManualFillingComponentBridge_addFieldToUserInfo(
           env, java_object_, j_user_info,
           ConvertUTF16ToJavaString(env, field.display_text()),
           ConvertUTF16ToJavaString(env, field.a11y_description()),
@@ -159,7 +159,7 @@
   }
 
   for (const FooterCommand& footer_command : tab_data.footer_commands()) {
-    Java_ManualFillingBridge_addFooterCommandToAccessorySheetData(
+    Java_ManualFillingComponentBridge_addFooterCommandToAccessorySheetData(
         env, java_object_, j_tab_data,
         ConvertUTF16ToJavaString(env, footer_command.display_text()));
   }
@@ -167,7 +167,7 @@
 }
 
 // static
-void JNI_ManualFillingBridge_CachePasswordSheetDataForTesting(
+void JNI_ManualFillingComponentBridge_CachePasswordSheetDataForTesting(
     JNIEnv* env,
     const base::android::JavaParamRef<jobject>& j_web_contents,
     const base::android::JavaParamRef<jobjectArray>& j_usernames,
diff --git a/components/autofill/core/browser/accessory_sheet_data.h b/components/autofill/core/browser/accessory_sheet_data.h
index 384079b8..4f4824a 100644
--- a/components/autofill/core/browser/accessory_sheet_data.h
+++ b/components/autofill/core/browser/accessory_sheet_data.h
@@ -87,8 +87,7 @@
   base::string16 display_text_;
 };
 
-// GENERATED_JAVA_ENUM_PACKAGE: (
-//   org.chromium.chrome.browser.autofill.keyboard_accessory)
+// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.keyboard_accessory
 enum class FallbackSheetType {
   // Indicates the data type to which an AccessorySheetData object corresponds.
   PASSWORD,
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json
index ba4e0f5c..168afde3e 100644
--- a/testing/buildbot/chromium.android.json
+++ b/testing/buildbot/chromium.android.json
@@ -1148,6 +1148,9 @@
         "test": "junit_unit_tests"
       },
       {
+        "test": "keyboard_accessory_junit_tests"
+      },
+      {
         "test": "media_base_junit_tests"
       },
       {
@@ -21831,6 +21834,9 @@
         "test": "junit_unit_tests"
       },
       {
+        "test": "keyboard_accessory_junit_tests"
+      },
+      {
         "test": "media_base_junit_tests"
       },
       {
diff --git a/testing/buildbot/chromium.clang.json b/testing/buildbot/chromium.clang.json
index 4098ac1..7cde0fd 100644
--- a/testing/buildbot/chromium.clang.json
+++ b/testing/buildbot/chromium.clang.json
@@ -5869,6 +5869,9 @@
         "test": "junit_unit_tests"
       },
       {
+        "test": "keyboard_accessory_junit_tests"
+      },
+      {
         "test": "media_base_junit_tests"
       },
       {
diff --git a/testing/buildbot/gn_isolate_map.pyl b/testing/buildbot/gn_isolate_map.pyl
index 16a634f4..5eaa03f 100644
--- a/testing/buildbot/gn_isolate_map.pyl
+++ b/testing/buildbot/gn_isolate_map.pyl
@@ -1344,6 +1344,10 @@
     "label": "//testing/android/junit:junit_unit_tests",
     "type": "junit_test",
   },
+  "keyboard_accessory_junit_tests": {
+    "label": "//chrome/android/features/keyboard_accessory:keyboard_accessory_junit_tests",
+    "type": "junit_test",
+  },
   "keyboard_unittests": {
     "label": "//ui/keyboard:keyboard_unittests",
     "type": "windowed_test_launcher",
diff --git a/testing/buildbot/manage.py b/testing/buildbot/manage.py
index eb736f2e..0ccad19 100755
--- a/testing/buildbot/manage.py
+++ b/testing/buildbot/manage.py
@@ -130,6 +130,7 @@
   'content_junit_tests',
   'device_junit_tests',
   'junit_unit_tests',
+  'keyboard_accessory_junit_tests',
   'media_router_e2e_tests',
   'media_router_junit_tests',
   'media_router_perf_tests',
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl
index e2b9e82..4110338 100644
--- a/testing/buildbot/test_suites.pyl
+++ b/testing/buildbot/test_suites.pyl
@@ -2257,6 +2257,7 @@
       'content_junit_tests': {},
       'device_junit_tests': {},
       'junit_unit_tests': {},
+      'keyboard_accessory_junit_tests': {},
       'media_base_junit_tests': {},
       'media_router_junit_tests': {},
       'net_junit_tests': {},
diff --git a/tools/gritsettings/translation_expectations.pyl b/tools/gritsettings/translation_expectations.pyl
index d819a6f..66d8d43 100644
--- a/tools/gritsettings/translation_expectations.pyl
+++ b/tools/gritsettings/translation_expectations.pyl
@@ -27,6 +27,7 @@
       "chrome/android/java/strings/android_chrome_strings.grd",
       "chrome/android/features/vr/java/strings/android_chrome_vr_strings.grd",
       "chrome/android/features/media_router/java/strings/android_chrome_media_router_strings.grd",
+      "chrome/android/features/keyboard_accessory/internal/java/strings/android_keyboard_accessory_strings.grd",
       "chrome/android/features/autofill_assistant/java/strings/android_chrome_autofill_assistant_strings.grd",
       "chrome/android/touchless/java/strings/touchless_strings.grd",
       "chrome/android/webapk/strings/android_webapk_strings.grd",