Android: Allow compiling browser without Java UI

Currently OS_ANDROID is used in many places to invoke
Java UI-specific codepaths.
Introduce ANDROID_JAVA_UI instead where this makes
sense.

Exclude all android sources from chrome/browser/android
and chrome/browser/ui/android when this is not set.

Most of these have dependencies on the Java UI or tab model.
Some of the features will need revisiting / untangling.

BUG=557285,507792
NOTRY=True

Review URL: https://codereview.chromium.org/1459793002

Cr-Commit-Position: refs/heads/master@{#363255}
diff --git a/build/args/aura_android.gni b/build/args/aura_android.gni
index 725c41b..fc67e649 100644
--- a/build/args/aura_android.gni
+++ b/build/args/aura_android.gni
@@ -15,4 +15,5 @@
 
 # ui.gni overrides
 use_aura = true
+android_java_ui = false
 toolkit_views = true
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
index 9de720c9..3ae8926 100644
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -6,6 +6,7 @@
 import("//build/config/android/rules.gni")
 import("//build_overrides/v8.gni")
 import("//chrome/android/chrome_public_apk_tmpl.gni")
+import("//chrome/common/features.gni")
 import("//chrome/version.gni")
 import("//testing/test.gni")
 import("//third_party/icu/config.gni")
@@ -128,29 +129,14 @@
 # GYP: //chrome/chrome.gyp:chrome_java
 android_library("chrome_java") {
   deps = [
-    ":chrome_java_resources",
-    ":document_tab_model_info_proto_java",
     "//base:base_java",
-    "//components/bookmarks/common/android:bookmarks_java",
-    "//components/dom_distiller/android:dom_distiller_content_java",
-    "//components/dom_distiller/android:dom_distiller_core_java",
-    "//components/gcm_driver/android:gcm_driver_java",
-    "//components/invalidation/impl:java",
-    "//components/navigation_interception/android:navigation_interception_java",
-    "//components/policy/android:policy_java",
-    "//components/precache/android:precache_java",
     "//components/safe_json/android:safe_json_java",
-    "//components/service_tab_launcher:service_tab_launcher_java",
-    "//components/signin/core/browser/android:java",
     "//components/variations/android:variations_java",
-    "//components/web_contents_delegate_android:web_contents_delegate_android_java",
     "//content/public/android:content_java",
     "//media/base/android:media_java",
-    "//media/base/android:media_java",
     "//media/midi:midi_java",
     "//net/android:net_java",
     "//printing:printing_java",
-    "//sync/android:sync_java",
     "//third_party/WebKit/public:blink_headers_java",
     "//third_party/android_data_chart:android_data_chart_java",
     "//third_party/android_media:android_media_java",
@@ -175,17 +161,41 @@
     ":chrome_android_java_enums_srcjar",
     ":chrome_android_java_google_api_keys_srcjar",
     ":chrome_version_srcjar",
-    ":custom_tabs_service_aidl",
     ":resource_id_javagen",
-    "//chrome:page_info_connection_type_javagen",
     "//chrome:content_setting_javagen",
     "//chrome:content_settings_type_javagen",
-    "//components/enhanced_bookmarks:enhanced_bookmarks_java_enums_srcjar",
-    "//components/offline_pages:offline_pages_enums_java",
-    "//components/omnibox/browser:autocomplete_match_type_javagen",
   ]
 
-  DEPRECATED_java_in_dir = "java/src"
+  # TODO(sievers): Split java code into components. Not everything
+  # is really all that UI related here.
+  if (android_java_ui) {
+    DEPRECATED_java_in_dir = "java/src"
+
+    srcjar_deps += [
+      ":custom_tabs_service_aidl",
+      "//chrome:page_info_connection_type_javagen",
+      "//components/enhanced_bookmarks:enhanced_bookmarks_java_enums_srcjar",
+      "//components/offline_pages:offline_pages_enums_java",
+      "//components/omnibox/browser:autocomplete_match_type_javagen",
+    ]
+
+    deps += [
+      ":chrome_java_resources",
+      ":document_tab_model_info_proto_java",
+      "//components/bookmarks/common/android:bookmarks_java",
+      "//components/dom_distiller/android:dom_distiller_content_java",
+      "//components/dom_distiller/android:dom_distiller_core_java",
+      "//components/gcm_driver/android:gcm_driver_java",
+      "//components/invalidation/impl:java",
+      "//components/navigation_interception/android:navigation_interception_java",
+      "//components/policy/android:policy_java",
+      "//components/precache/android:precache_java",
+      "//components/service_tab_launcher:service_tab_launcher_java",
+      "//components/signin/core/browser/android:java",
+      "//components/web_contents_delegate_android:web_contents_delegate_android_java",
+      "//sync/android:sync_java",
+    ]
+  }
 }
 
 # GYP: //chrome/chrome_browser.gypi:activity_type_ids_java
diff --git a/chrome/app/chrome_main_delegate.cc b/chrome/app/chrome_main_delegate.cc
index 112f393..f61a4a56 100644
--- a/chrome/app/chrome_main_delegate.cc
+++ b/chrome/app/chrome_main_delegate.cc
@@ -31,6 +31,7 @@
 #include "chrome/common/chrome_result_codes.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/common/crash_keys.h"
+#include "chrome/common/features.h"
 #include "chrome/common/logging_chrome.h"
 #include "chrome/common/profiling.h"
 #include "chrome/common/switch_utils.h"
@@ -89,8 +90,11 @@
 #include "chromeos/chromeos_switches.h"
 #endif
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/java_exception_reporter.h"
+#endif
+
+#if defined(OS_ANDROID)
 #include "chrome/common/descriptors_android.h"
 #else
 // Diagnostics is only available on non-android platforms.
@@ -792,7 +796,11 @@
 #if defined(OS_ANDROID)
     if (process_type.empty()) {
       breakpad::InitCrashReporter(process_type);
+// TODO(crbug.com/551176): Exception reporting should work without
+// ANDROID_JAVA_UI
+#if BUILDFLAG(ANDROID_JAVA_UI)
       chrome::android::InitJavaExceptionReporter();
+#endif
     } else {
       breakpad::InitNonBrowserCrashReporterForAndroid(process_type);
     }
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index d3e319e..ac6967f 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -276,6 +276,34 @@
     sources += rebase_path(gypi_values.chrome_browser_web_resource_sources,
                            ".",
                            "//chrome")
+    if (android_java_ui) {
+      sources +=
+          rebase_path(gypi_values.chrome_browser_sync_android_java_ui_sources,
+                      ".",
+                      "//chrome")
+      sources +=
+          rebase_path(gypi_values.chrome_browser_ssl_android_java_ui_sources,
+                      ".",
+                      "//chrome")
+      sources += rebase_path(
+              gypi_values.chrome_browser_history_android_java_ui_sources,
+              ".",
+              "//chrome")
+      sources += rebase_path(
+              gypi_values.chrome_browser_permissions_android_java_ui_sources,
+              ".",
+              "//chrome")
+      sources += rebase_path(
+              gypi_values.chrome_browser_search_engines_android_java_ui_sources,
+              ".",
+              "//chrome")
+      if (enable_supervised_users) {
+        sources += rebase_path(
+                gypi_values.chrome_browser_supervised_user_android_java_ui_sources,
+                ".",
+                "//chrome")
+      }
+    }
 
     deps += [
       "//apps",
@@ -644,11 +672,11 @@
     sources += rebase_path(gypi_values.chrome_browser_notifications_sources,
                            ".",
                            "//chrome")
-    if (is_android) {
-      sources +=
-          rebase_path(gypi_values.chrome_browser_notifications_android_sources,
-                      ".",
-                      "//chrome")
+    if (android_java_ui) {
+      sources += rebase_path(
+              gypi_values.chrome_browser_notifications_android_java_ui_sources,
+              ".",
+              "//chrome")
     } else {
       sources += rebase_path(
               gypi_values.chrome_browser_notifications_non_android_sources,
@@ -727,6 +755,12 @@
   if (is_android) {
     sources +=
         rebase_path(gypi_values.chrome_browser_android_sources, ".", "//chrome")
+  }
+
+  if (android_java_ui) {
+    sources += rebase_path(gypi_values.chrome_browser_android_java_ui_sources,
+                           ".",
+                           "//chrome")
     sources += rebase_path(gypi_values.chrome_browser_bookmark_android_sources,
                            ".",
                            "//chrome")
@@ -734,7 +768,6 @@
       ":client_discourse_context_proto",
       ":delta_file_proto",
       ":jni_headers",
-      "//components/cdm/browser",
       "//components/data_usage/android",
       "//components/enhanced_bookmarks",
       "//components/precache/content",
@@ -743,16 +776,25 @@
       "//components/service_tab_launcher",
       "//components/toolbar",
       "//components/web_contents_delegate_android",
+    ]
+
+    defines += [ "ENABLE_DATA_REDUCTION_PROXY_DEBUGGING" ]
+  }
+
+  if (is_android) {
+    deps += [
+      "//components/cdm/browser",
+      "//components/resources:components_resources",
       "//third_party/android_opengl/etc1",
       "//third_party/android_tools:cpu_features",
       "//third_party/libaddressinput:util",
     ]
+
     deps -= [
       "//components/storage_monitor",
       "//components/web_modal",
       "//third_party/libaddressinput",
     ]
-    defines += [ "ENABLE_DATA_REDUCTION_PROXY_DEBUGGING" ]
 
     if (use_seccomp_bpf) {
       defines += [ "USE_SECCOMP_BPF" ]
@@ -924,7 +966,7 @@
   }
 }
 
-if (is_android) {
+if (android_java_ui) {
   # GYP version: chrome/chrome_browser.gypi:chrome_browser_jni_headers
   generate_jni("jni_headers") {
     sources =
diff --git a/chrome/browser/background_sync/background_sync_controller_impl.cc b/chrome/browser/background_sync/background_sync_controller_impl.cc
index 895f8aeb..3c9238b7 100644
--- a/chrome/browser/background_sync/background_sync_controller_impl.cc
+++ b/chrome/browser/background_sync/background_sync_controller_impl.cc
@@ -6,9 +6,10 @@
 
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/common/features.h"
 #include "components/rappor/rappor_utils.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/background_sync_launcher_android.h"
 #endif
 
@@ -39,7 +40,7 @@
 
   if (profile_->IsOffTheRecord())
     return;
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   BackgroundSyncLauncherAndroid::LaunchBrowserIfStopped(enabled, min_ms);
 #else
 // TODO(jkarlin): Use BackgroundModeManager to enter background mode. See
diff --git a/chrome/browser/bookmarks/bookmark_model_factory.cc b/chrome/browser/bookmarks/bookmark_model_factory.cc
index b4be798b5..faef18ce 100644
--- a/chrome/browser/bookmarks/bookmark_model_factory.cc
+++ b/chrome/browser/bookmarks/bookmark_model_factory.cc
@@ -16,6 +16,7 @@
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/undo/bookmark_undo_service_factory.h"
 #include "chrome/common/chrome_switches.h"
+#include "chrome/common/features.h"
 #include "chrome/common/pref_names.h"
 #include "components/bookmarks/browser/bookmark_model.h"
 #include "components/bookmarks/browser/bookmark_utils.h"
@@ -24,11 +25,11 @@
 #include "components/undo/bookmark_undo_service.h"
 #include "content/public/browser/browser_thread.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h"
 #include "components/offline_pages/offline_page_feature.h"
 #include "components/offline_pages/offline_page_model.h"
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
 using bookmarks::BookmarkModel;
 
@@ -56,7 +57,7 @@
   DependsOn(BookmarkUndoServiceFactory::GetInstance());
   DependsOn(ChromeBookmarkClientFactory::GetInstance());
   DependsOn(StartupTaskRunnerServiceFactory::GetInstance());
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   if (offline_pages::IsOfflinePagesEnabled())
     DependsOn(offline_pages::OfflinePageModelFactory::GetInstance());
 #endif
@@ -80,20 +81,20 @@
                        content::BrowserThread::GetMessageLoopProxyForThread(
                            content::BrowserThread::UI));
   bool register_bookmark_undo_service_as_observer = true;
-#if !defined(OS_IOS) && !defined(OS_ANDROID)
+#if !defined(OS_IOS) && !BUILDFLAG(ANDROID_JAVA_UI)
   register_bookmark_undo_service_as_observer =
       base::CommandLine::ForCurrentProcess()->HasSwitch(
           switches::kEnableBookmarkUndo);
-#endif  // !defined(OS_IOS) && !defined(OS_ANDROID)
+#endif  // !defined(OS_IOS) && !BUILDFLAG(ANDROID_JAVA_UI)
   if (register_bookmark_undo_service_as_observer)
     BookmarkUndoServiceFactory::GetForProfile(profile)->Start(bookmark_model);
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   if (offline_pages::IsOfflinePagesEnabled()) {
     offline_pages::OfflinePageModelFactory::GetForBrowserContext(profile)->
         Start(bookmark_model);
   }
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
   return bookmark_model;
 }
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
index 603dff56..467f552 100644
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -69,6 +69,7 @@
 #include "chrome/common/chrome_paths.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/common/extensions/chrome_extensions_client.h"
+#include "chrome/common/features.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/common/switch_utils.h"
 #include "chrome/common/url_constants.h"
@@ -837,10 +838,10 @@
 #endif  // defined(OS_CHROMEOS)
   registry->RegisterBooleanPref(metrics::prefs::kMetricsReportingEnabled,
                                 GoogleUpdateSettings::GetCollectStatsConsent());
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   registry->RegisterBooleanPref(
       prefs::kCrashReportingEnabled, false);
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 }
 
 DownloadRequestLimiter* BrowserProcessImpl::download_request_limiter() {
diff --git a/chrome/browser/browsing_data/browsing_data_remover.cc b/chrome/browser/browsing_data/browsing_data_remover.cc
index f8865d3..7779d42 100644
--- a/chrome/browser/browsing_data/browsing_data_remover.cc
+++ b/chrome/browser/browsing_data/browsing_data_remover.cc
@@ -39,6 +39,7 @@
 #include "chrome/browser/sessions/session_service_factory.h"
 #include "chrome/browser/sessions/tab_restore_service_factory.h"
 #include "chrome/browser/web_data_service_factory.h"
+#include "chrome/common/features.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/common/url_constants.h"
 #include "components/autofill/core/browser/personal_data_manager.h"
@@ -76,7 +77,7 @@
 #include "storage/browser/quota/special_storage_policy.h"
 #include "url/origin.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h"
 #include "chrome/browser/android/webapps/webapp_registry.h"
 #include "chrome/browser/precache/precache_manager_factory.h"
@@ -429,7 +430,7 @@
     if (profile_->GetSSLHostStateDelegate())
       profile_->GetSSLHostStateDelegate()->Clear();
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
     precache::PrecacheManager* precache_manager =
         precache::PrecacheManagerFactory::GetForBrowserContext(profile_);
     // |precache_manager| could be nullptr if the profile is off the record.
@@ -801,7 +802,7 @@
     }
   }
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   if (remove_mask & REMOVE_WEBAPP_DATA) {
     waiting_for_clear_webapp_data_ = true;
     WebappRegistry::UnregisterWebapps(
@@ -897,7 +898,7 @@
          !waiting_for_clear_platform_keys_ &&
          !waiting_for_clear_plugin_data_ &&
          !waiting_for_clear_pnacl_cache_ &&
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
          !waiting_for_clear_precache_history_ &&
          !waiting_for_clear_webapp_data_ &&
          !waiting_for_clear_offline_page_data_ &&
@@ -1193,7 +1194,7 @@
 }
 #endif
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 void BrowsingDataRemover::OnClearedPrecacheHistory() {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   waiting_for_clear_precache_history_ = false;
diff --git a/chrome/browser/browsing_data/browsing_data_remover.h b/chrome/browser/browsing_data/browsing_data_remover.h
index 62cd36ea..fd04850 100644
--- a/chrome/browser/browsing_data/browsing_data_remover.h
+++ b/chrome/browser/browsing_data/browsing_data_remover.h
@@ -16,6 +16,7 @@
 #include "base/task/cancelable_task_tracker.h"
 #include "base/time/time.h"
 #include "chrome/browser/pepper_flash_settings_manager.h"
+#include "chrome/common/features.h"
 #include "components/search_engines/template_url_service.h"
 #if defined(OS_CHROMEOS)
 #include "chromeos/dbus/dbus_method_call_status.h"
@@ -83,7 +84,7 @@
     REMOVE_NOCHECKS = 1 << 16,
     REMOVE_WEBRTC_IDENTITY = 1 << 17,
     REMOVE_CACHE_STORAGE = 1 << 18,
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
     REMOVE_WEBAPP_DATA = 1 << 19,
     REMOVE_OFFLINE_PAGE_DATA = 1 << 20,
 #endif
@@ -104,7 +105,7 @@
                        REMOVE_WEBSQL |
                        REMOVE_CHANNEL_IDS |
                        REMOVE_SITE_USAGE_DATA |
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
                        REMOVE_WEBAPP_DATA |
                        REMOVE_OFFLINE_PAGE_DATA |
 #endif
@@ -397,7 +398,7 @@
   void OnClearedWebRtcLogs();
 #endif
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   // Callback on UI thread when the precache history has been cleared.
   void OnClearedPrecacheHistory();
 
@@ -465,7 +466,7 @@
   bool waiting_for_clear_platform_keys_ = false;
   bool waiting_for_clear_plugin_data_ = false;
   bool waiting_for_clear_pnacl_cache_ = false;
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   bool waiting_for_clear_precache_history_ = false;
   bool waiting_for_clear_webapp_data_ = false;
   bool waiting_for_clear_offline_page_data_ = false;
diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc
index a717dba..6f18aad0 100644
--- a/chrome/browser/chrome_browser_main.cc
+++ b/chrome/browser/chrome_browser_main.cc
@@ -97,6 +97,7 @@
 #include "chrome/common/chrome_switches.h"
 #include "chrome/common/crash_keys.h"
 #include "chrome/common/env_vars.h"
+#include "chrome/common/features.h"
 #include "chrome/common/logging_chrome.h"
 #include "chrome/common/net/net_resource_provider.h"
 #include "chrome/common/pref_names.h"
@@ -150,20 +151,18 @@
 #include "ui/base/resource/resource_bundle.h"
 #include "ui/strings/grit/app_locale_settings.h"
 
-#if defined(OS_ANDROID)
-#include "ui/base/resource/resource_bundle_android.h"
-#endif  // defined(OS_ANDROID)
-
-// TODO(bshe): Use defined(ANDROID_JAVA_UI) once
-// codereview.chromium.org/1459793002 landed for
-// dev_tools_discovery_provider_android.h.
-#if defined(OS_ANDROID) && !defined(USE_AURA)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/dev_tools_discovery_provider_android.h"
-#include "chrome/browser/metrics/thread_watcher_android.h"
 #else
 #include "chrome/browser/devtools/chrome_devtools_discovery_provider.h"
+#endif
+
+#if defined(OS_ANDROID)
+#include "chrome/browser/metrics/thread_watcher_android.h"
+#include "ui/base/resource/resource_bundle_android.h"
+#else
 #include "chrome/browser/feedback/feedback_profile_observer.h"
-#endif  // defined(OS_ANDROID) && !defined(USE_AURA)
+#endif  // defined(OS_ANDROID)
 
 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
 #include "chrome/browser/first_run/upgrade_util_linux.h"
@@ -1180,11 +1179,11 @@
 void ChromeBrowserMainParts::PostProfileInit() {
   TRACE_EVENT0("startup", "ChromeBrowserMainParts::PostProfileInit");
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   DevToolsDiscoveryProviderAndroid::Install();
 #else
   ChromeDevToolsDiscoveryProvider::Install();
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
   LaunchDevToolsHandlerIfNeeded(parsed_command_line());
   for (size_t i = 0; i < chrome_extra_parts_.size(); ++i)
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 3735101..14ee957 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -93,6 +93,7 @@
 #include "chrome/common/chrome_paths.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/common/env_vars.h"
+#include "chrome/common/features.h"
 #include "chrome/common/logging_chrome.h"
 #include "chrome/common/pepper_permission_util.h"
 #include "chrome/common/pref_names.h"
@@ -197,6 +198,12 @@
 #include "components/crash/content/browser/crash_handler_host_linux.h"
 #endif
 
+#if BUILDFLAG(ANDROID_JAVA_UI)
+#include "chrome/browser/android/new_tab_page_url_handler.h"
+#include "chrome/browser/android/webapps/single_tab_mode_tab_helper.h"
+#include "components/service_tab_launcher/browser/android/service_tab_launcher.h"
+#endif
+
 #if defined(OS_ANDROID)
 #include "ui/base/ui_base_paths.h"
 #include "ui/gfx/android/device_display_info.h"
@@ -277,12 +284,6 @@
 #include "chrome/browser/chrome_browser_main_extra_parts_exo.h"
 #endif
 
-#if defined(OS_ANDROID) && !defined(USE_AURA)
-#include "chrome/browser/android/new_tab_page_url_handler.h"
-#include "chrome/browser/android/webapps/single_tab_mode_tab_helper.h"
-#include "components/service_tab_launcher/browser/android/service_tab_launcher.h"
-#endif
-
 using base::FileDescriptor;
 using blink::WebWindowFeatures;
 using content::AccessTokenStore;
@@ -589,10 +590,7 @@
       safe_browsing_ui_manager_;
 };
 
-
-  // TODO(bshe): Use defined(ANDROID_JAVA_UI) once
-  // codereview.chromium.org/1459793002 landed.
-#if defined(OS_ANDROID) && !defined(USE_AURA)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 void HandleSingleTabModeBlockOnUIThread(const BlockedWindowParams& params) {
   WebContents* web_contents = tab_util::GetWebContentsByFrameID(
       params.render_process_id(), params.opener_render_frame_id());
@@ -601,7 +599,7 @@
 
   SingleTabModeTabHelper::FromWebContents(web_contents)->HandleOpenUrl(params);
 }
-#endif
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
 #if defined(OS_ANDROID)
 float GetDeviceScaleAdjustment() {
@@ -2176,9 +2174,7 @@
     }
   }
 
-  // TODO(bshe): Use defined(ANDROID_JAVA_UI) once
-  // codereview.chromium.org/1459793002 landed.
-#if defined(OS_ANDROID) && !defined(USE_AURA)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   if (SingleTabModeTabHelper::IsRegistered(render_process_id,
                                            opener_render_view_id)) {
     BrowserThread::PostTask(BrowserThread::UI,
@@ -2348,9 +2344,7 @@
   handler->AddHandlerPair(&WillHandleBrowserAboutURL,
                           BrowserURLHandler::null_handler());
 
-  // TODO(bshe): Use defined(ANDROID_JAVA_UI) once
-  // codereview.chromium.org/1459793002 landed.
-#if defined(OS_ANDROID) && !defined(USE_AURA)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   // Handler to rewrite chrome://newtab on Android.
   handler->AddHandlerPair(&chrome::android::HandleAndroidNativePageURL,
                           BrowserURLHandler::null_handler());
@@ -2636,9 +2630,10 @@
     const base::Callback<void(content::WebContents*)>& callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
-  // TODO(bshe): Use !defined(ANDROID_JAVA_UI) once
-  // codereview.chromium.org/1459793002 landed.
-#if (!defined(OS_ANDROID) || defined(USE_AURA)) && !defined(OS_IOS)
+#if BUILDFLAG(ANDROID_JAVA_UI)
+  service_tab_launcher::ServiceTabLauncher::GetInstance()->LaunchTab(
+      browser_context, params, callback);
+#elif !defined(OS_IOS)
   chrome::NavigateParams nav_params(
       Profile::FromBrowserContext(browser_context),
       params.url,
@@ -2648,9 +2643,6 @@
 
   Navigate(&nav_params);
   callback.Run(nav_params.target_contents);
-#elif defined(OS_ANDROID)
-  service_tab_launcher::ServiceTabLauncher::GetInstance()->LaunchTab(
-      browser_context, params, callback);
 #else
   NOTIMPLEMENTED();
 #endif
diff --git a/chrome/browser/dom_distiller/profile_utils.cc b/chrome/browser/dom_distiller/profile_utils.cc
index 3eab2bb..a94ade8b 100644
--- a/chrome/browser/dom_distiller/profile_utils.cc
+++ b/chrome/browser/dom_distiller/profile_utils.cc
@@ -11,6 +11,7 @@
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/common/chrome_isolated_world_ids.h"
 #include "chrome/common/chrome_switches.h"
+#include "chrome/common/features.h"
 #include "components/dom_distiller/content/browser/distiller_javascript_utils.h"
 #include "components/dom_distiller/content/browser/distiller_ui_handle.h"
 #include "components/dom_distiller/content/browser/dom_distiller_viewer_source.h"
@@ -21,9 +22,9 @@
 #include "chrome/browser/ui/webui/print_preview/print_preview_distiller.h"
 #endif  // defined(ENABLE_PRINT_PREVIEW)
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/dom_distiller/distiller_ui_handle_android.h"
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
 void RegisterDomDistillerViewerSource(Profile* profile) {
   bool enabled_distiller = base::CommandLine::ForCurrentProcess()->HasSwitch(
@@ -42,10 +43,10 @@
             profile, dom_distiller_service_factory);
     scoped_ptr<dom_distiller::DistillerUIHandle> ui_handle;
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
     ui_handle.reset(
         new dom_distiller::android::DistillerUIHandleAndroid());
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
     // Set the JavaScript world ID.
     if (!dom_distiller::DistillerJavaScriptWorldIdIsSet()) {
diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrome/browser/download/chrome_download_manager_delegate.cc
index 3d609fb..17f3076 100644
--- a/chrome/browser/download/chrome_download_manager_delegate.cc
+++ b/chrome/browser/download/chrome_download_manager_delegate.cc
@@ -40,6 +40,7 @@
 #include "chrome/browser/ui/browser_finder.h"
 #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h"
 #include "chrome/common/chrome_constants.h"
+#include "chrome/common/features.h"
 #include "chrome/common/pref_names.h"
 #include "components/pref_registry/pref_registry_syncable.h"
 #include "content/public/browser/download_item.h"
@@ -49,7 +50,7 @@
 #include "net/base/filename_util.h"
 #include "net/base/mime_util.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/download/chrome_download_manager_overwrite_infobar_delegate.h"
 #include "chrome/browser/infobars/infobar_service.h"
 #endif
@@ -579,7 +580,7 @@
     const base::FilePath& suggested_path,
     const DownloadTargetDeterminerDelegate::FileSelectedCallback& callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   chrome::android::ChromeDownloadManagerOverwriteInfoBarDelegate::Create(
       InfoBarService::FromWebContents(download->GetWebContents()),
       suggested_path, callback);
diff --git a/chrome/browser/download/download_request_limiter.cc b/chrome/browser/download/download_request_limiter.cc
index c2d4004..4650c7a 100644
--- a/chrome/browser/download/download_request_limiter.cc
+++ b/chrome/browser/download/download_request_limiter.cc
@@ -11,6 +11,7 @@
 #include "chrome/browser/infobars/infobar_service.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/tab_contents/tab_util.h"
+#include "chrome/common/features.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/browser_thread.h"
@@ -24,7 +25,7 @@
 #include "content/public/browser/web_contents_delegate.h"
 #include "url/gurl.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/download/download_request_infobar_delegate_android.h"
 #else
 #include "chrome/browser/download/download_permission_request.h"
@@ -99,7 +100,7 @@
     return;
   }
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   bool promptable = InfoBarService::FromWebContents(web_contents()) != nullptr;
 #else
   bool promptable =
@@ -133,7 +134,7 @@
   if (is_showing_prompt())
     return;
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   DownloadRequestInfoBarDelegateAndroid::Create(
       InfoBarService::FromWebContents(web_contents_), factory_.GetWeakPtr());
 #else
diff --git a/chrome/browser/download/download_resource_throttle_unittest.cc b/chrome/browser/download/download_resource_throttle_unittest.cc
index dd4365d..8c320f7 100644
--- a/chrome/browser/download/download_resource_throttle_unittest.cc
+++ b/chrome/browser/download/download_resource_throttle_unittest.cc
@@ -7,6 +7,7 @@
 #include "chrome/browser/download/download_request_limiter.h"
 #include "chrome/browser/download/download_resource_throttle.h"
 #include "chrome/browser/tab_contents/tab_util.h"
+#include "chrome/common/features.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/render_process_host.h"
@@ -18,7 +19,7 @@
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/download/mock_download_controller_android.h"
 #endif
 
@@ -62,7 +63,7 @@
     ChromeRenderViewHostTestHarness::SetUp();
     web_contents()->SetDelegate(&delegate_);
     run_loop_.reset(new base::RunLoop());
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
     content::DownloadControllerAndroid::SetDownloadControllerAndroid(
         &download_controller_);
 #endif
@@ -71,7 +72,7 @@
   void TearDown() override {
     content::BrowserThread::DeleteSoon(content::BrowserThread::IO, FROM_HERE,
                                        throttle_);
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
     content::DownloadControllerAndroid::SetDownloadControllerAndroid(nullptr);
 #endif
     ChromeRenderViewHostTestHarness::TearDown();
@@ -104,7 +105,7 @@
   scoped_refptr<DownloadRequestLimiter> limiter_;
   ::testing::NiceMock<MockResourceController> resource_controller_;
   scoped_ptr<base::RunLoop> run_loop_;
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   chrome::android::MockDownloadControllerAndroid download_controller_;
 #endif
 };
@@ -115,7 +116,7 @@
   StartThrottle();
 }
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 TEST_F(DownloadResourceThrottleTest, DownloadWithFailedFileAcecssRequest) {
   content::DownloadControllerAndroid::Get()
       ->SetApproveFileAccessRequestForTesting(false);
diff --git a/chrome/browser/geolocation/geolocation_permission_context_factory.cc b/chrome/browser/geolocation/geolocation_permission_context_factory.cc
index 27742b6..2f9625b 100644
--- a/chrome/browser/geolocation/geolocation_permission_context_factory.cc
+++ b/chrome/browser/geolocation/geolocation_permission_context_factory.cc
@@ -6,10 +6,11 @@
 
 #include "chrome/browser/profiles/incognito_helpers.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/common/features.h"
 #include "chrome/common/pref_names.h"
 #include "components/keyed_service/content/browser_context_dependency_manager.h"
 #include "components/pref_registry/pref_registry_syncable.h"
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/geolocation/geolocation_permission_context_android.h"
 #else
 #include "chrome/browser/geolocation/geolocation_permission_context.h"
@@ -29,7 +30,7 @@
   return base::Singleton<GeolocationPermissionContextFactory>::get();
 }
 
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
 GeolocationPermissionContextFactory::GeolocationPermissionContextFactory()
     : PermissionContextFactoryBase(
           "GeolocationPermissionContext",
@@ -50,7 +51,7 @@
 KeyedService*
 GeolocationPermissionContextFactory::BuildServiceInstanceFor(
     content::BrowserContext* profile) const {
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   return new GeolocationPermissionContext(static_cast<Profile*>(profile));
 #else
   return new GeolocationPermissionContextAndroid(
@@ -60,7 +61,7 @@
 
 void GeolocationPermissionContextFactory::RegisterProfilePrefs(
     user_prefs::PrefRegistrySyncable* registry) {
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   registry->RegisterBooleanPref(prefs::kGeolocationEnabled, true);
 #endif
 }
diff --git a/chrome/browser/geolocation/geolocation_permission_context_unittest.cc b/chrome/browser/geolocation/geolocation_permission_context_unittest.cc
index e33acba..42273ac 100644
--- a/chrome/browser/geolocation/geolocation_permission_context_unittest.cc
+++ b/chrome/browser/geolocation/geolocation_permission_context_unittest.cc
@@ -25,6 +25,7 @@
 #include "chrome/browser/permissions/permission_request_id.h"
 #include "chrome/browser/ui/website_settings/permission_bubble_request.h"
 #include "chrome/common/chrome_switches.h"
+#include "chrome/common/features.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
 #include "chrome/test/base/testing_profile.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
@@ -44,7 +45,7 @@
 #include "content/public/test/web_contents_tester.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "base/prefs/pref_service.h"
 #include "chrome/browser/android/mock_location_settings.h"
 #include "chrome/browser/geolocation/geolocation_permission_context_android.h"
@@ -143,7 +144,7 @@
   void AddNewTab(const GURL& url);
   void CheckTabContentsState(const GURL& requesting_frame,
                              ContentSetting expected_content_setting);
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   size_t GetBubblesQueueSize(PermissionBubbleManager* manager);
   void AcceptBubble(PermissionBubbleManager* manager);
   void DenyBubble(PermissionBubbleManager* manager);
@@ -239,7 +240,7 @@
 #if defined(ENABLE_EXTENSIONS)
   extensions::SetViewType(new_tab, extensions::VIEW_TYPE_TAB_CONTENTS);
 #endif
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   InfoBarService::CreateForWebContents(new_tab);
 #else
   PermissionBubbleManager::CreateForWebContents(new_tab);
@@ -279,7 +280,7 @@
   TabSpecificContentSettings::CreateForWebContents(web_contents());
   geolocation_permission_context_ =
       GeolocationPermissionContextFactory::GetForProfile(profile());
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   static_cast<GeolocationPermissionContextAndroid*>(
       geolocation_permission_context_)
       ->SetLocationSettingsForTesting(
@@ -299,7 +300,7 @@
   ChromeRenderViewHostTestHarness::TearDown();
 }
 
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
 size_t GeolocationPermissionContextTests::GetBubblesQueueSize(
     PermissionBubbleManager* manager) {
   return manager->requests_.size();
@@ -328,7 +329,7 @@
 
 void GeolocationPermissionContextTests::BubbleManagerDocumentLoadCompleted(
     content::WebContents* web_contents) {
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   PermissionBubbleManager::FromWebContents(web_contents)->
       DocumentOnLoadCompletedInMainFrame();
 #endif
@@ -344,7 +345,7 @@
 }
 
 size_t GeolocationPermissionContextTests::GetNumberOfPrompts() {
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   PermissionBubbleManager* manager =
       PermissionBubbleManager::FromWebContents(web_contents());
   return GetBubblesQueueSize(manager);
@@ -354,7 +355,7 @@
 }
 
 void GeolocationPermissionContextTests::AcceptPrompt() {
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   PermissionBubbleManager* manager =
       PermissionBubbleManager::FromWebContents(web_contents());
   AcceptBubble(manager);
@@ -367,7 +368,7 @@
 }
 
 base::string16 GeolocationPermissionContextTests::GetPromptText() {
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   PermissionBubbleManager* manager =
       PermissionBubbleManager::FromWebContents(web_contents());
   return manager->requests_.front()->GetMessageText();
@@ -392,7 +393,7 @@
   ASSERT_EQ(1U, GetNumberOfPrompts());
 }
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 TEST_F(GeolocationPermissionContextTests, SinglePermissionInfobar) {
   GURL requesting_frame("http://www.example.com/geolocation");
   NavigateAndCommit(requesting_frame);
@@ -490,7 +491,7 @@
   CheckTabContentsState(requesting_frame_0, CONTENT_SETTING_ALLOW);
   CheckPermissionMessageSent(0, true);
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   infobars::InfoBar* infobar_0 = infobar_service()->infobar_at(0);
   infobar_service()->RemoveInfoBar(infobar_0);
   EXPECT_EQ(1U, closed_infobar_tracker_.size());
@@ -506,7 +507,7 @@
   EXPECT_NE(text_0, text_1);
 
   // Cancel (block) this frame.
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   PermissionBubbleManager* manager =
       PermissionBubbleManager::FromWebContents(web_contents());
   DenyBubble(manager);
@@ -536,7 +537,7 @@
 
   // Check permission is requested.
   ASSERT_EQ(0U, GetNumberOfPrompts());
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   const bool user_gesture = false;
 #else
   const bool user_gesture = true;
@@ -556,7 +557,7 @@
   CheckPermissionMessageSent(0, true);
 
   // Cleanup.
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
   infobar_service()->RemoveInfoBar(infobar);
   EXPECT_EQ(1U, closed_infobar_tracker_.size());
@@ -566,7 +567,7 @@
 
 // TODO(felt): The bubble is rejecting file:// permission requests.
 // Fix and enable this test. crbug.com/444047
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #define MAYBE_PermissionForFileScheme PermissionForFileScheme
 #else
 #define MAYBE_PermissionForFileScheme DISABLED_PermissionForFileScheme
@@ -618,7 +619,7 @@
   ASSERT_FALSE(text_0.empty());
 
   // Simulate the frame going away; the request should be removed.
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   PermissionBubbleManager* manager =
       PermissionBubbleManager::FromWebContents(web_contents());
   CloseBubble(manager);
@@ -667,7 +668,7 @@
   BubbleManagerDocumentLoadCompleted();
   BubbleManagerDocumentLoadCompleted(extra_tabs_[0]);
   BubbleManagerDocumentLoadCompleted(extra_tabs_[1]);
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   PermissionBubbleManager* manager_a0 =
       PermissionBubbleManager::FromWebContents(web_contents());
   PermissionBubbleManager* manager_b =
@@ -684,7 +685,7 @@
   RequestGeolocationPermission(
       extra_tabs_[1], RequestIDForTab(1, 0), url_a, true);
   ASSERT_EQ(1U, GetNumberOfPrompts());  // For A0.
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   ASSERT_EQ(1U, GetBubblesQueueSize(manager_b));
   ASSERT_EQ(1U, GetBubblesQueueSize(manager_a1));
 #else
@@ -693,7 +694,7 @@
 #endif
 
   // Accept the permission in tab A0.
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   AcceptBubble(manager_a0);
 #else
   infobars::InfoBar* infobar_a0 = infobar_service()->infobar_at(0);
@@ -710,7 +711,7 @@
   // disappear. It does not cause the bubble to disappear: crbug.com/443013.
   // TODO(felt): Update this test when the bubble's behavior is changed.
   // Either way, tab B should still have a pending permission request.
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   ASSERT_EQ(1U, GetBubblesQueueSize(manager_a1));
   ASSERT_EQ(1U, GetBubblesQueueSize(manager_b));
 #else
@@ -724,7 +725,7 @@
   GURL url_b("http://www.example-2.com/geolocation");
   NavigateAndCommit(url_a);  // Tab A0.
   AddNewTab(url_a);          // Tab A1.
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   BubbleManagerDocumentLoadCompleted();
   BubbleManagerDocumentLoadCompleted(extra_tabs_[0]);
   PermissionBubbleManager* manager_a0 =
@@ -741,7 +742,7 @@
       extra_tabs_[0], RequestIDForTab(0, 0), url_a, true);
   RequestGeolocationPermission(
       extra_tabs_[0], RequestIDForTab(0, 1), url_b, true);
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   ASSERT_EQ(1U, GetBubblesQueueSize(manager_a0));
   ASSERT_EQ(1U, GetBubblesQueueSize(manager_a1));
 #else
@@ -750,7 +751,7 @@
 #endif
 
   // Accept the first request in tab A1.
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   AcceptBubble(manager_a1);
 #else
   infobars::InfoBar* infobar_a1 = infobar_service_for_tab(0)->infobar_at(0);
@@ -767,7 +768,7 @@
   // Because they're the same origin, this will cause tab A0's infobar to
   // disappear. It does not cause the bubble to disappear: crbug.com/443013.
   // TODO(felt): Update this test when the bubble's behavior is changed.
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   EXPECT_EQ(1U, GetBubblesQueueSize(manager_a0));
 #else
   EXPECT_EQ(0U, infobar_service()->infobar_count());
@@ -775,14 +776,14 @@
 #endif
 
   // The second request should now be visible in tab A1.
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   ASSERT_EQ(1U, GetBubblesQueueSize(manager_a1));
 #else
   ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count());
 #endif
 
   // Accept the second request and check that it's gone.
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   AcceptBubble(manager_a1);
   EXPECT_EQ(0U, GetBubblesQueueSize(manager_a1));
 #else
@@ -817,7 +818,7 @@
   ASSERT_EQ(1U, GetNumberOfPrompts());
 
   // Delete the tab contents.
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
   DeleteContents();
   ASSERT_EQ(1U, closed_infobar_tracker_.size());
@@ -915,7 +916,7 @@
 
   // Accept the first frame.
   AcceptPrompt();
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0));
 #endif
   CheckTabContentsState(requesting_frame_0, CONTENT_SETTING_ALLOW);
@@ -940,7 +941,7 @@
   AcceptPrompt();
   CheckTabContentsState(requesting_frame_1, CONTENT_SETTING_ALLOW);
   CheckPermissionMessageSent(1, true);
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0));
 #endif
 
diff --git a/chrome/browser/history/chrome_history_backend_client.cc b/chrome/browser/history/chrome_history_backend_client.cc
index 1d0e841..595994b 100644
--- a/chrome/browser/history/chrome_history_backend_client.cc
+++ b/chrome/browser/history/chrome_history_backend_client.cc
@@ -5,18 +5,19 @@
 #include "chrome/browser/history/chrome_history_backend_client.h"
 
 #include "chrome/common/channel_info.h"
+#include "chrome/common/features.h"
 #include "components/bookmarks/browser/bookmark_model.h"
 #include "components/version_info/version_info.h"
 #include "url/gurl.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "base/files/file_path.h"
 #include "base/logging.h"
 #include "chrome/browser/history/android/android_provider_backend.h"
 #include "components/history/core/browser/history_backend.h"
 #endif
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 namespace {
 const base::FilePath::CharType kAndroidCacheFilename[] =
     FILE_PATH_LITERAL("AndroidCache");
@@ -70,7 +71,7 @@
          channel != version_info::Channel::BETA;
 }
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 void ChromeHistoryBackendClient::OnHistoryBackendInitialized(
     history::HistoryBackend* history_backend,
     history::HistoryDatabase* history_database,
@@ -91,4 +92,4 @@
     const base::FilePath& history_dir) {
   sql::Connection::Delete(history_dir.Append(kAndroidCacheFilename));
 }
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
index a5ae645c..cc33dc19 100644
--- a/chrome/browser/io_thread.cc
+++ b/chrome/browser/io_thread.cc
@@ -116,7 +116,7 @@
 #include "net/cert_net/nss_ocsp.h"
 #endif
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "base/android/build_info.h"
 #include "chrome/browser/android/data_usage/external_data_use_observer.h"
 #include "chrome/browser/android/net/external_estimate_provider_android.h"
@@ -636,7 +636,7 @@
 #endif
 
   scoped_ptr<data_usage::DataUseAmortizer> data_use_amortizer;
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   data_use_amortizer.reset(new data_usage::android::TrafficStatsAmortizer());
 #endif
 
@@ -658,7 +658,7 @@
       globals_->data_use_aggregator.get(),
       true /* is_data_usage_off_the_record */);
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   globals_->external_data_use_observer.reset(
       new chrome::android::ExternalDataUseObserver(
           globals_->data_use_aggregator.get(),
@@ -679,7 +679,7 @@
                                  &network_quality_estimator_params);
 
   scoped_ptr<net::ExternalEstimateProvider> external_estimate_provider;
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   external_estimate_provider.reset(
       new chrome::android::ExternalEstimateProviderAndroid());
 #endif
diff --git a/chrome/browser/io_thread.h b/chrome/browser/io_thread.h
index 96e10964..e8b4ac3 100644
--- a/chrome/browser/io_thread.h
+++ b/chrome/browser/io_thread.h
@@ -19,6 +19,7 @@
 #include "base/strings/string_piece.h"
 #include "base/time/time.h"
 #include "chrome/browser/net/chrome_network_delegate.h"
+#include "chrome/common/features.h"
 #include "components/ssl_config/ssl_config_service_manager.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/browser_thread_delegate.h"
@@ -35,13 +36,13 @@
 class CommandLine;
 }
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 namespace chrome {
 namespace android {
 class ExternalDataUseObserver;
 }
 }
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
 namespace chrome_browser_net {
 class DnsProbeService;
@@ -138,11 +139,11 @@
     // Global aggregator of data use. It must outlive the
     // |system_network_delegate|.
     scoped_ptr<data_usage::DataUseAggregator> data_use_aggregator;
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
     // An external observer of data use.
     scoped_ptr<chrome::android::ExternalDataUseObserver>
         external_data_use_observer;
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
     // The "system" NetworkDelegate, used for Profile-agnostic network events.
     scoped_ptr<net::NetworkDelegate> system_network_delegate;
     scoped_ptr<net::HostResolver> host_resolver;
diff --git a/chrome/browser/media/media_stream_devices_controller.cc b/chrome/browser/media/media_stream_devices_controller.cc
index c01e52e..44f449b 100644
--- a/chrome/browser/media/media_stream_devices_controller.cc
+++ b/chrome/browser/media/media_stream_devices_controller.cc
@@ -22,6 +22,7 @@
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/common/chrome_switches.h"
+#include "chrome/common/features.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
@@ -37,14 +38,14 @@
 #include "grit/theme_resources.h"
 #include "ui/base/l10n/l10n_util.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include <vector>
 
 #include "chrome/browser/android/preferences/pref_service_bridge.h"
 #include "chrome/browser/permissions/permission_update_infobar_delegate_android.h"
 #include "content/public/browser/android/content_view_core.h"
 #include "ui/android/window_android.h"
-#endif  // OS_ANDROID
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
 using content::BrowserThread;
 
@@ -170,7 +171,7 @@
     return;
   }
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   std::vector<ContentSettingsType> content_settings_types;
   if (IsAllowedForAudio())
     content_settings_types.push_back(CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC);
@@ -584,7 +585,7 @@
 
 bool MediaStreamDevicesController::IsUserAcceptAllowed(
     ContentSettingsType content_type) const {
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   content::ContentViewCore* cvc =
       content::ContentViewCore::FromWebContents(web_contents_);
   if (!cvc)
diff --git a/chrome/browser/media/permission_bubble_media_access_handler.cc b/chrome/browser/media/permission_bubble_media_access_handler.cc
index 4c89392..abdec56d 100644
--- a/chrome/browser/media/permission_bubble_media_access_handler.cc
+++ b/chrome/browser/media/permission_bubble_media_access_handler.cc
@@ -9,6 +9,7 @@
 #include "chrome/browser/media/media_stream_device_permissions.h"
 #include "chrome/browser/media/media_stream_devices_controller.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/common/features.h"
 #include "chrome/common/pref_names.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "content/public/browser/browser_thread.h"
@@ -16,7 +17,7 @@
 #include "content/public/browser/notification_types.h"
 #include "content/public/browser/web_contents.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include <vector>
 
 #include "base/bind.h"
@@ -25,9 +26,9 @@
 #include "chrome/browser/permissions/permission_update_infobar_delegate_android.h"
 #else
 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
-#endif  // OS_ANDROID
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 namespace {
 // Callback for the permission update infobar when the site and Chrome
 // permissions are mismatched on Android.
@@ -40,7 +41,7 @@
 }
 }  // namespace
 
-#endif  // OS_ANDROID
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
 using content::BrowserThread;
 
@@ -141,7 +142,7 @@
               &PermissionBubbleMediaAccessHandler::OnAccessRequestResponse,
               base::Unretained(this), web_contents)));
   if (!controller->IsAskingForAudio() && !controller->IsAskingForVideo()) {
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
     // If either audio or video was previously allowed and Chrome no longer has
     // the necessary permissions, show a infobar to attempt to address this
     // mismatch.
@@ -165,7 +166,7 @@
     return;
   }
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   MediaStreamInfoBarDelegateAndroid::Create(web_contents, controller.Pass());
 #else
   PermissionBubbleManager* bubble_manager =
diff --git a/chrome/browser/media/router/media_router_dialog_controller.cc b/chrome/browser/media/router/media_router_dialog_controller.cc
index 0d8506a..757bc9d 100644
--- a/chrome/browser/media/router/media_router_dialog_controller.cc
+++ b/chrome/browser/media/router/media_router_dialog_controller.cc
@@ -5,11 +5,12 @@
 #include "chrome/browser/media/router/media_router_dialog_controller.h"
 
 #include "chrome/browser/media/router/media_router_metrics.h"
+#include "chrome/common/features.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/browser/web_contents_delegate.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/media/android/router/media_router_dialog_controller_android.h"
 #else
 #include "chrome/browser/ui/webui/media_router/media_router_dialog_controller_impl.h"
@@ -21,7 +22,7 @@
 MediaRouterDialogController*
 MediaRouterDialogController::GetOrCreateForWebContents(
     content::WebContents* contents) {
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   return MediaRouterDialogControllerAndroid::GetOrCreateForWebContents(
       contents);
 #else
diff --git a/chrome/browser/metrics/chrome_metrics_service_accessor.cc b/chrome/browser/metrics/chrome_metrics_service_accessor.cc
index e4416f7c..0fe57ab5 100644
--- a/chrome/browser/metrics/chrome_metrics_service_accessor.cc
+++ b/chrome/browser/metrics/chrome_metrics_service_accessor.cc
@@ -6,6 +6,7 @@
 
 #include "base/prefs/pref_service.h"
 #include "chrome/browser/browser_process.h"
+#include "chrome/common/features.h"
 #include "chrome/common/pref_names.h"
 #include "content/public/browser/browser_thread.h"
 
@@ -29,7 +30,7 @@
     return false;
   }
 
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   return IsMetricsReportingEnabled(g_browser_process->local_state());
 #else
   // Android currently obtain the value for whether the user has
@@ -42,7 +43,7 @@
   pref_value = g_browser_process->local_state()->GetBoolean(
       prefs::kCrashReportingEnabled);
   return IsMetricsReportingEnabledWithPrefValue(pref_value);
-#endif  // !defined(OS_ANDROID)
+#endif  // !BUILDFLAG(ANDROID_JAVA_UI)
 }
 
 // static
diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc
index 5ffa6f6c..1fbe66d 100644
--- a/chrome/browser/metrics/chrome_metrics_service_client.cc
+++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
@@ -28,6 +28,7 @@
 #include "chrome/common/chrome_paths.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/common/crash_keys.h"
+#include "chrome/common/features.h"
 #include "components/metrics/call_stack_profile_metrics_provider.h"
 #include "components/metrics/drive_metrics_provider.h"
 #include "components/metrics/gpu/gpu_metrics_provider.h"
@@ -48,7 +49,7 @@
 #include "content/public/browser/histogram_fetcher.h"
 #include "content/public/browser/notification_service.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/metrics/android_metrics_provider.h"
 #endif
 
@@ -113,7 +114,7 @@
 // This should happen only once as the used preference will be initialized
 // afterwards in |UmaSessionStats.java|.
 bool ShouldClearSavedMetrics() {
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   PrefService* local_state = g_browser_process->local_state();
   return !local_state->HasPrefPath(metrics::prefs::kMetricsReportingEnabled) &&
          variations::GetVariationParamValue("UMA_EnableCellularLogUpload",
@@ -170,9 +171,9 @@
   metrics::MetricsService::RegisterPrefs(registry);
   metrics::StabilityMetricsHelper::RegisterPrefs(registry);
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   AndroidMetricsProvider::RegisterPrefs(registry);
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
 #if defined(ENABLE_PLUGINS)
   PluginMetricsProvider::RegisterPrefs(registry);
@@ -343,11 +344,11 @@
       scoped_ptr<metrics::MetricsProvider>(
           new metrics::CallStackProfileMetricsProvider));
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   metrics_service_->RegisterMetricsProvider(
       scoped_ptr<metrics::MetricsProvider>(
           new AndroidMetricsProvider(g_browser_process->local_state())));
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
 #if defined(OS_WIN)
   google_update_metrics_provider_ = new GoogleUpdateMetricsProviderWin;
diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/chrome_network_delegate.cc
index 8fd4f9b..b7fc936 100644
--- a/chrome/browser/net/chrome_network_delegate.cc
+++ b/chrome/browser/net/chrome_network_delegate.cc
@@ -35,6 +35,7 @@
 #include "chrome/browser/profiles/profile_manager.h"
 #include "chrome/browser/task_management/task_manager_interface.h"
 #include "chrome/common/chrome_constants.h"
+#include "chrome/common/features.h"
 #include "chrome/common/pref_names.h"
 #include "components/content_settings/core/browser/cookie_settings.h"
 #include "components/data_usage/core/data_use_aggregator.h"
@@ -56,7 +57,7 @@
 #include "net/log/net_log.h"
 #include "net/url_request/url_request.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/io_thread.h"
 #include "chrome/browser/precache/precache_manager_factory.h"
 #include "components/precache/content/precache_manager.h"
@@ -106,7 +107,7 @@
   callback.Run(rv);
 }
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 void RecordPrecacheStatsOnUIThread(const GURL& url,
                                    const GURL& referrer,
                                    base::TimeDelta latency,
@@ -129,7 +130,7 @@
   precache_manager->RecordStatsForFetch(url, referrer, latency, fetch_time,
                                         size, was_cached);
 }
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
 void ReportInvalidReferrerSendOnUI() {
   base::RecordAction(
@@ -526,7 +527,7 @@
   }
 
   if (request->status().status() == net::URLRequestStatus::SUCCESS) {
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
     // For better accuracy, we use the actual bytes read instead of the length
     // specified with the Content-Length header, which may be inaccurate,
     // or missing, as is the case with chunked encoding.
@@ -540,7 +541,7 @@
         base::Bind(&RecordPrecacheStatsOnUIThread, request->url(),
                    GURL(request->referrer()), latency, base::Time::Now(),
                    received_content_length, request->was_cached(), profile_));
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
     extensions_delegate_->OnCompleted(request, started);
   } else if (request->status().status() == net::URLRequestStatus::FAILED ||
              request->status().status() == net::URLRequestStatus::CANCELED) {
diff --git a/chrome/browser/net/net_error_tab_helper.cc b/chrome/browser/net/net_error_tab_helper.cc
index 25b9e7a950..bc0f9a7 100644
--- a/chrome/browser/net/net_error_tab_helper.cc
+++ b/chrome/browser/net/net_error_tab_helper.cc
@@ -13,6 +13,7 @@
 #include "chrome/browser/net/net_error_diagnostics_dialog.h"
 #include "chrome/browser/platform_util.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/common/features.h"
 #include "chrome/common/localized_error.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/common/render_messages.h"
@@ -25,13 +26,13 @@
 #include "net/base/net_errors.h"
 #include "url/gurl.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h"
 #include "chrome/browser/android/tab_android.h"
 #include "components/offline_pages/offline_page_feature.h"
 #include "components/offline_pages/offline_page_item.h"
 #include "components/offline_pages/offline_page_model.h"
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
 using content::BrowserContext;
 using content::BrowserThread;
@@ -131,9 +132,9 @@
 
   is_error_page_ = is_error_page;
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   SetOfflinePageInfo(render_frame_host, validated_url);
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 }
 
 void NetErrorTabHelper::DidCommitProvisionalLoadForFrame(
@@ -185,10 +186,10 @@
   IPC_BEGIN_MESSAGE_MAP(NetErrorTabHelper, message)
     IPC_MESSAGE_HANDLER(ChromeViewHostMsg_RunNetworkDiagnostics,
                         RunNetworkDiagnostics)
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
     IPC_MESSAGE_HANDLER(ChromeViewHostMsg_ShowOfflinePages, ShowOfflinePages)
     IPC_MESSAGE_HANDLER(ChromeViewHostMsg_LoadOfflineCopy, LoadOfflineCopy)
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
     IPC_MESSAGE_UNHANDLED(handled = false)
   IPC_END_MESSAGE_MAP()
 
@@ -296,7 +297,7 @@
   ShowNetworkDiagnosticsDialog(web_contents(), sanitized_url);
 }
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 void NetErrorTabHelper::SetOfflinePageInfo(
     content::RenderFrameHost* render_frame_host,
     const GURL& url) {
@@ -354,6 +355,6 @@
   return entry && (entry->GetPageType() == content::PAGE_TYPE_ERROR);
 }
 
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
 }  // namespace chrome_browser_net
diff --git a/chrome/browser/net/net_error_tab_helper.h b/chrome/browser/net/net_error_tab_helper.h
index 169c81a..37dcf37 100644
--- a/chrome/browser/net/net_error_tab_helper.h
+++ b/chrome/browser/net/net_error_tab_helper.h
@@ -13,6 +13,7 @@
 #include "base/memory/weak_ptr.h"
 #include "base/prefs/pref_member.h"
 #include "chrome/browser/net/dns_probe_service.h"
+#include "chrome/common/features.h"
 #include "components/error_page/common/net_error_info.h"
 #include "content/public/browser/web_contents_observer.h"
 #include "content/public/browser/web_contents_user_data.h"
@@ -103,13 +104,13 @@
   virtual void RunNetworkDiagnosticsHelper(const std::string& sanitized_url);
 
   // Relates to offline pages handling.
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   void SetOfflinePageInfo(content::RenderFrameHost* render_frame_host,
                           const GURL& url);
   void ShowOfflinePages();
   void LoadOfflineCopy(const GURL& url);
   bool IsFromErrorPage() const;
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
   // True if the last provisional load that started was for an error page.
   bool is_error_page_;
diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b/chrome/browser/password_manager/chrome_password_manager_client.cc
index 6bbdc00..bdd0a1e 100644
--- a/chrome/browser/password_manager/chrome_password_manager_client.cc
+++ b/chrome/browser/password_manager/chrome_password_manager_client.cc
@@ -22,6 +22,7 @@
 #include "chrome/browser/ui/passwords/passwords_client_ui_delegate.h"
 #include "chrome/common/channel_info.h"
 #include "chrome/common/chrome_switches.h"
+#include "chrome/common/features.h"
 #include "chrome/common/url_constants.h"
 #include "components/autofill/content/browser/content_autofill_driver.h"
 #include "components/autofill/content/browser/content_autofill_driver_factory.h"
@@ -53,11 +54,11 @@
 #include "net/base/url_util.h"
 #include "third_party/re2/re2/re2.h"
 
-#if defined(OS_MACOSX) || defined(OS_ANDROID)
+#if defined(OS_MACOSX) || BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/password_manager/save_password_infobar_delegate.h"
 #endif
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/tab_android.h"
 #include "chrome/browser/password_manager/account_chooser_dialog_android.h"
 #include "chrome/browser/password_manager/generated_password_saved_infobar_delegate_android.h"
@@ -228,7 +229,7 @@
       manage_passwords_ui_controller->OnPasswordSubmitted(form_to_save.Pass());
     }
   } else {
-#if defined(OS_MACOSX) || defined(OS_ANDROID)
+#if defined(OS_MACOSX) || BUILDFLAG(ANDROID_JAVA_UI)
     if (form_to_save->IsBlacklisted())
       return false;
     std::string uma_histogram_suffix(
@@ -273,7 +274,7 @@
 void ChromePasswordManagerClient::NotifyUserAutoSignin(
     ScopedVector<autofill::PasswordForm> local_forms) {
   DCHECK(!local_forms.empty());
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   ShowAutoSigninPrompt(web_contents(), local_forms[0]->username_value);
 #else
   PasswordsClientUIDelegateFromWebContents(web_contents())
@@ -284,7 +285,7 @@
 
 void ChromePasswordManagerClient::AutomaticPasswordSave(
     scoped_ptr<password_manager::PasswordFormManager> saved_form) {
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   GeneratedPasswordSavedInfoBarDelegateAndroid::Create(web_contents());
 #else
   if (IsTheHotNewBubbleUIEnabled()) {
@@ -473,7 +474,7 @@
 }
 
 bool ChromePasswordManagerClient::IsTheHotNewBubbleUIEnabled() {
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   return false;
 #elif defined(OS_MACOSX)
   // Query the group first for correct UMA reporting.
diff --git a/chrome/browser/platform_util.h b/chrome/browser/platform_util.h
index 651ae89..7a9494d9 100644
--- a/chrome/browser/platform_util.h
+++ b/chrome/browser/platform_util.h
@@ -9,6 +9,7 @@
 
 #include "base/callback_forward.h"
 #include "base/strings/string16.h"
+#include "chrome/common/features.h"
 #include "ui/gfx/native_widget_types.h"
 
 class GURL;
@@ -98,7 +99,7 @@
 bool IsSwipeTrackingFromScrollEventsEnabled();
 #endif
 
-#if defined(OS_ANDROID) && !defined(USE_AURA)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 bool RegisterPlatformUtil(JNIEnv* env);
 #endif
 }  // namespace platform_util
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
index 6de0567..ba44e2cb 100644
--- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc
+++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -12,6 +12,7 @@
 #include "chrome/browser/policy/managed_bookmarks_policy_handler.h"
 #include "chrome/browser/profiles/incognito_mode_policy_handler.h"
 #include "chrome/common/chrome_switches.h"
+#include "chrome/common/features.h"
 #include "chrome/common/pref_names.h"
 #include "components/bookmarks/common/bookmark_pref_names.h"
 #include "components/content_settings/core/common/pref_names.h"
@@ -35,7 +36,7 @@
 #include "components/variations/pref_names.h"
 #include "policy/policy_constants.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/search/contextual_search_policy_handler_android.h"
 #endif
 
@@ -507,14 +508,14 @@
     base::Value::TYPE_BOOLEAN },
 #endif  // !defined(OS_MACOSX) && !defined(OS_CHROMEOS)
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   { key::kDataCompressionProxyEnabled,
     data_reduction_proxy::prefs::kDataReductionProxyEnabled,
     base::Value::TYPE_BOOLEAN },
   { key::kAuthAndroidNegotiateAccountType,
     prefs::kAuthAndroidNegotiateAccountType,
     base::Value::TYPE_STRING },
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
 #if !defined(OS_CHROMEOS) && !defined(OS_ANDROID) && !defined(OS_IOS)
   { key::kNativeMessagingUserLevelHosts,
@@ -622,7 +623,7 @@
   handlers->AddHandler(make_scoped_ptr(new ProxyPolicyHandler()));
   handlers->AddHandler(make_scoped_ptr(new URLBlacklistPolicyHandler()));
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   handlers->AddHandler(
       make_scoped_ptr(new ContextualSearchPolicyHandlerAndroid()));
 #endif
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index 2576bcf..57862ff 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -66,6 +66,7 @@
 #include "chrome/browser/ui/webui/ntp/new_tab_ui.h"
 #include "chrome/browser/ui/webui/plugins_ui.h"
 #include "chrome/browser/ui/webui/print_preview/sticky_settings.h"
+#include "chrome/common/features.h"
 #include "chrome/common/pref_names.h"
 #include "components/autofill/core/browser/autofill_manager.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
@@ -136,7 +137,7 @@
 #include "chrome/browser/ui/webui/local_discovery/local_discovery_ui.h"
 #endif
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/bookmarks/partner_bookmarks_shim.h"
 #include "chrome/browser/android/most_visited_sites.h"
 #include "chrome/browser/android/new_tab_page_prefs.h"
@@ -467,7 +468,7 @@
   SupervisedUserWhitelistService::RegisterProfilePrefs(registry);
 #endif
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   variations::VariationsService::RegisterProfilePrefs(registry);
   MostVisitedSites::RegisterProfilePrefs(registry);
   NewTabPagePrefs::RegisterProfilePrefs(registry);
diff --git a/chrome/browser/prefs/incognito_mode_prefs.cc b/chrome/browser/prefs/incognito_mode_prefs.cc
index 19ebf22..543451d 100644
--- a/chrome/browser/prefs/incognito_mode_prefs.cc
+++ b/chrome/browser/prefs/incognito_mode_prefs.cc
@@ -12,6 +12,7 @@
 #include "base/time/time.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/common/chrome_switches.h"
+#include "chrome/common/features.h"
 #include "chrome/common/pref_names.h"
 #include "components/pref_registry/pref_registry_syncable.h"
 #include "content/public/browser/browser_thread.h"
@@ -26,9 +27,9 @@
 #include "base/win/windows_version.h"
 #endif  // OS_WIN
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/chrome_application.h"
-#endif  // OS_ANDROID
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
 using content::BrowserThread;
 
@@ -208,15 +209,13 @@
 bool IncognitoModePrefs::ArePlatformParentalControlsEnabled() {
 #if defined(OS_WIN)
   return PlatformParentalControlsValue::GetInstance()->is_enabled();
-#elif defined(OS_ANDROID)
-#if defined(USE_AURA)
+#elif defined(OS_ANDROID) && defined(USE_AURA)
   // TODO(bshe): Support parental controls for Aura Android. See
   // crbug.com/564742
   NOTIMPLEMENTED();
   return false;
-#else
+#elif BUILDFLAG(ANDROID_JAVA_UI)
   return chrome::android::ChromeApplication::AreParentalControlsEnabled();
-#endif
 #else
   return false;
 #endif
diff --git a/chrome/browser/printing/print_job_worker.cc b/chrome/browser/printing/print_job_worker.cc
index 771ce18..0b2552e 100644
--- a/chrome/browser/printing/print_job_worker.cc
+++ b/chrome/browser/printing/print_job_worker.cc
@@ -16,6 +16,7 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/printing/print_job.h"
+#include "chrome/common/features.h"
 #include "chrome/grit/generated_resources.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/notification_service.h"
@@ -27,7 +28,7 @@
 #include "printing/printing_utils.h"
 #include "ui/base/l10n/l10n_util.h"
 
-#if defined(OS_ANDROID) && !defined(USE_AURA)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/tab_android.h"
 #endif
 
@@ -213,7 +214,7 @@
     bool is_scripted) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
-#if defined(OS_ANDROID) && !defined(USE_AURA)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   if (is_scripted) {
     PrintingContextDelegate* printing_context_delegate =
         static_cast<PrintingContextDelegate*>(printing_context_delegate_.get());
diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
index 8566442..f967a254 100644
--- a/chrome/browser/profiles/profile.cc
+++ b/chrome/browser/profiles/profile.cc
@@ -79,7 +79,7 @@
       prefs::kSearchSuggestEnabled,
       true,
       user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   registry->RegisterStringPref(
       prefs::kContextualSearchEnabled,
       std::string(),
diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc
index e581281..d4f4c98f 100644
--- a/chrome/browser/profiles/profile_io_data.cc
+++ b/chrome/browser/profiles/profile_io_data.cc
@@ -47,6 +47,7 @@
 #include "chrome/browser/ui/search/new_tab_page_interceptor_service_factory.h"
 #include "chrome/common/chrome_paths.h"
 #include "chrome/common/chrome_switches.h"
+#include "chrome/common/features.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/common/url_constants.h"
 #include "components/about_handler/about_protocol_handler.h"
@@ -867,7 +868,7 @@
 
 void ProfileIOData::InitializeMetricsEnabledStateOnUIThread() {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   // TODO(dwkang): rename or unify the pref for UMA once we have conclusion
   // in crbugs.com/246495.
   // Android has it's own preferences for metrics / crash uploading.
@@ -882,7 +883,7 @@
                        g_browser_process->local_state());
   enable_metrics_.MoveToThread(
       BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO));
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 }
 
 bool ProfileIOData::GetMetricsEnabledStateOnIOThread() const {
diff --git a/chrome/browser/push_messaging/push_messaging_notification_manager.cc b/chrome/browser/push_messaging/push_messaging_notification_manager.cc
index 88e0aa1..e5ec50aa 100644
--- a/chrome/browser/push_messaging/push_messaging_notification_manager.cc
+++ b/chrome/browser/push_messaging/push_messaging_notification_manager.cc
@@ -13,6 +13,7 @@
 #include "chrome/browser/notifications/platform_notification_service_impl.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/push_messaging/push_messaging_constants.h"
+#include "chrome/common/features.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/rappor/rappor_utils.h"
@@ -29,7 +30,7 @@
 #include "ui/base/l10n/l10n_util.h"
 #include "url/gurl.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/ui/android/tab_model/tab_model.h"
 #include "chrome/browser/ui/android/tab_model/tab_model_list.h"
 #else
@@ -144,7 +145,7 @@
   bool notification_needed = true;
 
   // Sites with a currently visible tab don't need to show notifications.
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   for (auto it = TabModelList::begin(); it != TabModelList::end(); ++it) {
     Profile* profile = (*it)->GetProfile();
     WebContents* active_web_contents = (*it)->GetActiveWebContents();
@@ -158,11 +159,7 @@
       notification_needed = false;
       break;
     }
-#if defined(OS_ANDROID)
   }
-#else
-  }
-#endif
 
   // If more than one notification is showing for this Service Worker, close
   // the default notification if it happens to be part of this group.
diff --git a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
index 351d35a9..f552005 100644
--- a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
+++ b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
@@ -25,7 +25,6 @@
 #include "chrome/browser/prerender/prerender_util.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/profiles/profile_io_data.h"
-#include "chrome/browser/renderer_host/data_reduction_proxy_resource_throttle_android.h"
 #include "chrome/browser/renderer_host/safe_browsing_resource_throttle.h"
 #include "chrome/browser/renderer_host/thread_hop_resource_throttle.h"
 #include "chrome/browser/safe_browsing/safe_browsing_service.h"
@@ -33,6 +32,7 @@
 #include "chrome/browser/tab_contents/tab_util.h"
 #include "chrome/browser/ui/login/login_prompt.h"
 #include "chrome/common/chrome_switches.h"
+#include "chrome/common/features.h"
 #include "chrome/common/url_constants.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_io_data.h"
@@ -88,8 +88,12 @@
 #include "third_party/protobuf/src/google/protobuf/repeated_field.h"
 #endif
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/intercept_download_resource_throttle.h"
+#endif
+
+#if defined(OS_ANDROID)
+#include "chrome/browser/renderer_host/data_reduction_proxy_resource_throttle_android.h"
 #include "components/navigation_interception/intercept_navigation_delegate.h"
 #endif
 
@@ -424,7 +428,7 @@
     throttles->push_back(new DownloadResourceThrottle(
         download_request_limiter_, info->GetWebContentsGetterForRequest(),
         request->url(), request->method()));
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
     throttles->push_back(
         new chrome::InterceptDownloadResourceThrottle(
             request, child_id, route_id, request_id));
diff --git a/chrome/browser/signin/chrome_signin_helper.cc b/chrome/browser/signin/chrome_signin_helper.cc
index 0179bf3..4914aef 100644
--- a/chrome/browser/signin/chrome_signin_helper.cc
+++ b/chrome/browser/signin/chrome_signin_helper.cc
@@ -11,6 +11,7 @@
 #include "chrome/browser/signin/chrome_signin_client.h"
 #include "chrome/browser/tab_contents/tab_util.h"
 #include "chrome/browser/ui/browser_window.h"
+#include "chrome/common/features.h"
 #include "chrome/common/url_constants.h"
 #include "components/signin/core/browser/account_reconcilor.h"
 #include "components/signin/core/browser/signin_header_helper.h"
@@ -20,13 +21,13 @@
 #include "google_apis/gaia/gaia_auth_util.h"
 #include "net/url_request/url_request.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/signin/account_management_screen_helper.h"
 #else
 #include "chrome/browser/ui/browser_commands.h"
 #include "chrome/browser/ui/browser_finder.h"
 #include "extensions/browser/guest_view/web_view/web_view_renderer_state.h"
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
 namespace signin {
 
@@ -54,7 +55,7 @@
       AccountReconcilorFactory::GetForProfile(profile);
   account_reconcilor->OnReceivedManageAccountsResponse(
       manage_accounts_params.service_type);
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   Browser* browser = chrome::FindBrowserWithWebContents(web_contents);
   if (browser) {
     BrowserWindow::AvatarBubbleMode bubble_mode;
@@ -76,7 +77,7 @@
     browser->window()->ShowAvatarBubbleFromAvatarButton(bubble_mode,
                                                         manage_accounts_params);
   }
-#else   // defined(OS_ANDROID)
+#else   // BUILDFLAG(ANDROID_JAVA_UI)
   if (service_type == signin::GAIA_SERVICE_TYPE_INCOGNITO) {
     GURL url(manage_accounts_params.continue_url.empty()
                  ? chrome::kChromeUINativeNewTabURL
@@ -90,7 +91,7 @@
     AccountManagementScreenHelper::OpenAccountManagementScreen(profile,
                                                                service_type);
   }
-#endif  // !defined(OS_ANDROID)
+#endif  // !BUILDFLAG(ANDROID_JAVA_UI)
 }
 
 // Returns the parameters contained in the X-Chrome-Manage-Accounts response
diff --git a/chrome/browser/signin/profile_oauth2_token_service_factory.cc b/chrome/browser/signin/profile_oauth2_token_service_factory.cc
index a8b65af..41e074f 100644
--- a/chrome/browser/signin/profile_oauth2_token_service_factory.cc
+++ b/chrome/browser/signin/profile_oauth2_token_service_factory.cc
@@ -9,10 +9,11 @@
 #include "chrome/browser/signin/chrome_signin_client_factory.h"
 #include "chrome/browser/signin/signin_error_controller_factory.h"
 #include "chrome/browser/web_data_service_factory.h"
+#include "chrome/common/features.h"
 #include "components/keyed_service/content/browser_context_dependency_manager.h"
 #include "components/signin/core/browser/profile_oauth2_token_service.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/signin/oauth2_token_service_delegate_android.h"
 #else
 #include "chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.h"
@@ -50,7 +51,7 @@
 KeyedService* ProfileOAuth2TokenServiceFactory::BuildServiceInstanceFor(
     content::BrowserContext* context) const {
   Profile* profile = static_cast<Profile*>(context);
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   OAuth2TokenServiceDelegateAndroid* delegate =
       new OAuth2TokenServiceDelegateAndroid(
           AccountTrackerServiceFactory::GetInstance()->GetForProfile(profile));
diff --git a/chrome/browser/speech/tts_android.cc b/chrome/browser/speech/tts_android.cc
index dbec2f8..e8ec307e 100644
--- a/chrome/browser/speech/tts_android.cc
+++ b/chrome/browser/speech/tts_android.cc
@@ -11,6 +11,7 @@
 #include "base/memory/singleton.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/speech/tts_controller.h"
+#include "chrome/common/features.h"
 #include "jni/TtsPlatformImpl_jni.h"
 
 using base::android::AttachCurrentThread;
diff --git a/chrome/browser/speech/tts_android.h b/chrome/browser/speech/tts_android.h
index f6ce3b2..f38d674 100644
--- a/chrome/browser/speech/tts_android.h
+++ b/chrome/browser/speech/tts_android.h
@@ -8,6 +8,7 @@
 #include "base/android/jni_android.h"
 #include "base/android/scoped_java_ref.h"
 #include "chrome/browser/speech/tts_platform.h"
+#include "chrome/common/features.h"
 
 class TtsPlatformImplAndroid : public TtsPlatformImpl {
  public:
@@ -32,7 +33,9 @@
 
   // Static functions.
   static TtsPlatformImplAndroid* GetInstance();
+#if BUILDFLAG(ANDROID_JAVA_UI)
   static bool Register(JNIEnv* env);
+#endif
 
  private:
   friend struct base::DefaultSingletonTraits<TtsPlatformImplAndroid>;
diff --git a/chrome/browser/supervised_user/supervised_user_interstitial.cc b/chrome/browser/supervised_user/supervised_user_interstitial.cc
index 3810abd..510c783de 100644
--- a/chrome/browser/supervised_user/supervised_user_interstitial.cc
+++ b/chrome/browser/supervised_user/supervised_user_interstitial.cc
@@ -16,6 +16,7 @@
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/supervised_user/supervised_user_service.h"
 #include "chrome/browser/supervised_user/supervised_user_service_factory.h"
+#include "chrome/common/features.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/infobars/core/infobar.h"
@@ -36,9 +37,9 @@
 #include "ui/base/webui/jstemplate_builder.h"
 #include "ui/base/webui/web_ui_util.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/supervised_user/child_accounts/child_account_feedback_reporter_android.h"
-#else
+#elif !defined(OS_ANDROID)
 #include "chrome/browser/ui/browser_finder.h"
 #include "chrome/browser/ui/chrome_pages.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
@@ -340,7 +341,7 @@
         SupervisedUserURLFilter::GetBlockMessageID(reason_));
     std::string message = l10n_util::GetStringFUTF8(
         IDS_BLOCK_INTERSTITIAL_DEFAULT_FEEDBACK_TEXT, reason);
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
     ReportChildAccountFeedback(web_contents_, message, url_);
 #else
     chrome::ShowFeedbackPage(chrome::FindBrowserWithWebContents(web_contents_),
diff --git a/chrome/browser/sync/chrome_sync_client.cc b/chrome/browser/sync/chrome_sync_client.cc
index 7c5e70d2..7e389f9 100644
--- a/chrome/browser/sync/chrome_sync_client.cc
+++ b/chrome/browser/sync/chrome_sync_client.cc
@@ -29,6 +29,7 @@
 #include "chrome/browser/undo/bookmark_undo_service_factory.h"
 #include "chrome/browser/web_data_service_factory.h"
 #include "chrome/common/channel_info.h"
+#include "chrome/common/features.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/common/url_constants.h"
 #include "components/autofill/core/browser/webdata/autocomplete_syncable_service.h"
@@ -90,7 +91,7 @@
 #include "chrome/browser/spellchecker/spellcheck_service.h"
 #endif
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/sync/glue/synced_window_delegates_getter_android.h"
 #endif
 
@@ -116,7 +117,7 @@
  public:
   explicit SyncSessionsClientImpl(Profile* profile) : profile_(profile) {
     window_delegates_getter_.reset(
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
         // Android doesn't have multi-profile support, so no need to pass the
         // profile in.
         new browser_sync::SyncedWindowDelegatesGetterAndroid());
@@ -262,11 +263,11 @@
 sync_driver::SyncApiComponentFactory::RegisterDataTypesMethod
 ChromeSyncClient::GetRegisterPlatformTypesCallback() {
   return base::Bind(
-#ifdef OS_ANDROID
+#if BUILDFLAG(ANDROID_JAVA_UI)
       &ChromeSyncClient::RegisterAndroidDataTypes,
 #else
       &ChromeSyncClient::RegisterDesktopDataTypes,
-#endif  // OS_ANDROID
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
       weak_ptr_factory_.GetWeakPtr());
 }
 
diff --git a/chrome/browser/sync/sessions/notification_service_sessions_router.cc b/chrome/browser/sync/sessions/notification_service_sessions_router.cc
index f66ec51..780ff29 100644
--- a/chrome/browser/sync/sessions/notification_service_sessions_router.cc
+++ b/chrome/browser/sync/sessions/notification_service_sessions_router.cc
@@ -12,6 +12,7 @@
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/sync/browser_synced_window_delegates_getter.h"
 #include "chrome/browser/ui/sync/tab_contents_synced_tab_delegate.h"
+#include "chrome/common/features.h"
 #include "components/history/core/browser/history_service.h"
 #include "components/sync_sessions/sync_sessions_client.h"
 #include "components/sync_sessions/synced_tab_delegate.h"
@@ -22,7 +23,7 @@
 #include "content/public/browser/notification_source.h"
 #include "content/public/browser/web_contents.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/tab_android.h"
 #endif
 
@@ -44,14 +45,14 @@
 
 SyncedTabDelegate* GetSyncedTabDelegateFromWebContents(
     content::WebContents* web_contents) {
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   TabAndroid* tab = TabAndroid::FromWebContents(web_contents);
   return tab ? tab->GetSyncedTabDelegate() : nullptr;
-#else   // !OS_ANDROID
+#else
   SyncedTabDelegate* delegate =
       TabContentsSyncedTabDelegate::FromWebContents(web_contents);
   return delegate;
-#endif  // OS_ANDROID
+#endif
 }
 
 }  // namespace
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index 9569103..3ac381ae 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -331,19 +331,19 @@
   }
 
   if (is_android) {
-    deps += [
-      "//chrome/browser:jni_headers",
-      "//crypto:platform",
-    ]
+    deps += [ "//crypto:platform" ]
 
     defines += [ "CHROME_BUILD_ID=\"$android_chrome_build_id\"" ]
 
-    if (!use_aura) {
+    if (android_java_ui) {
       sources +=
-          rebase_path(gypi_values.chrome_browser_ui_android_non_aura_sources,
+          rebase_path(gypi_values.chrome_browser_ui_android_java_ui_sources,
                       ".",
                       "//chrome")
-      deps += [ "//components/web_contents_delegate_android" ]
+      deps += [
+        "//chrome/browser:jni_headers",
+        "//components/web_contents_delegate_android",
+      ]
       deps -= [ "//ui/events" ]
     }
   }
diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/browser/ui/autofill/chrome_autofill_client.cc
index 0646736..35c9573 100644
--- a/chrome/browser/ui/autofill/chrome_autofill_client.cc
+++ b/chrome/browser/ui/autofill/chrome_autofill_client.cc
@@ -26,6 +26,7 @@
 #include "chrome/browser/ui/chrome_pages.h"
 #include "chrome/browser/ui/tabs/tab_strip_model_observer.h"
 #include "chrome/browser/web_data_service_factory.h"
+#include "chrome/common/features.h"
 #include "chrome/common/url_constants.h"
 #include "components/autofill/content/browser/content_autofill_driver.h"
 #include "components/autofill/content/common/autofill_messages.h"
@@ -39,7 +40,7 @@
 #include "content/public/browser/render_frame_host.h"
 #include "ui/gfx/geometry/rect.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/chrome_application.h"
 #include "chrome/browser/ui/android/autofill/autofill_logger_android.h"
 #else
@@ -60,7 +61,7 @@
       last_rfh_to_rac_(nullptr) {
   DCHECK(web_contents);
 
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   // Since ZoomController is also a WebContentsObserver, we need to be careful
   // about disconnecting from it since the relative order of destruction of
   // WebContentsObservers is not guaranteed. ZoomController silently clears
@@ -112,7 +113,7 @@
         Profile::FromBrowserContext(web_contents()->GetBrowserContext())
             ->GetOriginalProfile();
     base::Closure login_callback;
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
     login_callback =
         LoginUIServiceFactory::GetShowLoginPopupCallbackForProfile(profile);
 #endif
@@ -130,13 +131,13 @@
 }
 
 void ChromeAutofillClient::ShowAutofillSettings() {
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   chrome::android::ChromeApplication::ShowAutofillSettings();
 #else
   Browser* browser = chrome::FindBrowserWithWebContents(web_contents());
   if (browser)
     chrome::ShowSettingsSubPage(browser, chrome::kAutofillSubPage);
-#endif  // #if defined(OS_ANDROID)
+#endif  // #if BUILDFLAG(ANDROID_JAVA_UI)
 }
 
 void ChromeAutofillClient::ShowUnmaskPrompt(
@@ -279,7 +280,7 @@
 }
 
 void ChromeAutofillClient::MainFrameWasResized(bool width_changed) {
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   // Ignore virtual keyboard showing and hiding a strip of suggestions.
   if (!width_changed)
     return;
@@ -312,10 +313,10 @@
 void ChromeAutofillClient::DidFillOrPreviewField(
     const base::string16& autofilled_value,
     const base::string16& profile_full_name) {
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   AutofillLoggerAndroid::DidFillOrPreviewField(autofilled_value,
                                                profile_full_name);
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 }
 
 void ChromeAutofillClient::OnFirstUserGestureObserved() {
diff --git a/chrome/browser/ui/autofill/credit_card_scanner_view.cc b/chrome/browser/ui/autofill/credit_card_scanner_view.cc
index 0f6e5b6..0d1bb08a 100644
--- a/chrome/browser/ui/autofill/credit_card_scanner_view.cc
+++ b/chrome/browser/ui/autofill/credit_card_scanner_view.cc
@@ -3,11 +3,12 @@
 // found in the LICENSE file.
 
 #include "chrome/browser/ui/autofill/credit_card_scanner_view.h"
+#include "chrome/common/features.h"
 
 namespace autofill {
 
 // Not implemented on other platforms yet.
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
 // static
 bool CreditCardScannerView::CanShow() {
   return false;
diff --git a/chrome/browser/ui/autofill/password_generation_popup_controller_impl.cc b/chrome/browser/ui/autofill/password_generation_popup_controller_impl.cc
index bdc57b8..bc8b0ea 100644
--- a/chrome/browser/ui/autofill/password_generation_popup_controller_impl.cc
+++ b/chrome/browser/ui/autofill/password_generation_popup_controller_impl.cc
@@ -18,6 +18,7 @@
 #include "chrome/browser/ui/autofill/popup_constants.h"
 #include "chrome/browser/ui/browser_finder.h"
 #include "chrome/browser/ui/chrome_pages.h"
+#include "chrome/common/features.h"
 #include "chrome/common/url_constants.h"
 #include "chrome/grit/chromium_strings.h"
 #include "chrome/grit/generated_resources.h"
@@ -34,7 +35,7 @@
 #include "ui/gfx/geometry/rect_conversions.h"
 #include "ui/gfx/text_utils.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/chrome_application.h"
 #endif
 
@@ -232,7 +233,7 @@
 }
 
 void PasswordGenerationPopupControllerImpl::OnSavedPasswordsLinkClicked() {
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   chrome::android::ChromeApplication::ShowPasswordSettings();
 #else
   chrome::ShowSettingsSubPage(
diff --git a/chrome/browser/ui/blocked_content/popup_blocker_tab_helper.cc b/chrome/browser/ui/blocked_content/popup_blocker_tab_helper.cc
index ac28874..95f2a61 100644
--- a/chrome/browser/ui/blocked_content/popup_blocker_tab_helper.cc
+++ b/chrome/browser/ui/blocked_content/popup_blocker_tab_helper.cc
@@ -12,6 +12,7 @@
 #include "chrome/browser/ui/browser_navigator.h"
 #include "chrome/browser/ui/browser_navigator_params.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
+#include "chrome/common/features.h"
 #include "chrome/common/render_messages.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "content/public/browser/navigation_controller.h"
@@ -22,7 +23,7 @@
 #include "content/public/browser/web_contents_delegate.h"
 #include "third_party/WebKit/public/web/WebWindowFeatures.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/ui/android/tab_model/tab_model_list.h"
 #endif
 
@@ -120,7 +121,7 @@
     return;
   // We set user_gesture to true here, so the new popup gets correctly focused.
   popup->params.user_gesture = true;
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   TabModelList::HandlePopupNavigation(&popup->params);
 #else
   chrome::Navigate(&popup->params);
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
index 8548f343..83ce991 100644
--- a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
+++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
@@ -27,7 +27,7 @@
 #include "content/public/browser/navigation_details.h"
 #include "ui/base/l10n/l10n_util.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/chrome_application.h"
 #else
 #include "chrome/browser/ui/passwords/manage_passwords_icon_view.h"
@@ -149,7 +149,7 @@
     UpdateBubbleAndIconVisibility();
 }
 
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
 void ManagePasswordsUIController::UpdateIconAndBubbleState(
     ManagePasswordsIconView* icon) {
   if (should_pop_up_bubble_) {
@@ -271,7 +271,7 @@
 }
 
 void ManagePasswordsUIController::NavigateToExternalPasswordManager() {
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   NOTREACHED();
 #else
   chrome::NavigateParams params(
@@ -284,7 +284,7 @@
 }
 
 void ManagePasswordsUIController::NavigateToSmartLockHelpPage() {
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   NOTREACHED();
 #else
   chrome::NavigateParams params(
@@ -296,7 +296,7 @@
 }
 
 void ManagePasswordsUIController::NavigateToPasswordManagerSettingsPage() {
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   chrome::android::ChromeApplication::ShowPasswordSettings();
 #else
   chrome::ShowSettingsSubPage(
@@ -340,7 +340,7 @@
     passwords_data_.OnInactive();
   }
 
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   Browser* browser = chrome::FindBrowserWithWebContents(web_contents());
   if (!browser)
     return;
@@ -375,14 +375,14 @@
 }
 
 void ManagePasswordsUIController::WasHidden() {
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   TabDialogs::FromWebContents(web_contents())->HideManagePasswordsBubble();
 #endif
 }
 
 void ManagePasswordsUIController::ShowBubbleWithoutUserInteraction() {
   DCHECK(should_pop_up_bubble_);
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   Browser* browser = chrome::FindBrowserWithWebContents(web_contents());
   if (!browser || browser->toolbar_model()->input_in_progress())
     return;
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller.h b/chrome/browser/ui/passwords/manage_passwords_ui_controller.h
index 19bebd25..dd745998 100644
--- a/chrome/browser/ui/passwords/manage_passwords_ui_controller.h
+++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller.h
@@ -9,6 +9,7 @@
 #include "chrome/browser/ui/passwords/manage_passwords_state.h"
 #include "chrome/browser/ui/passwords/passwords_client_ui_delegate.h"
 #include "chrome/browser/ui/passwords/passwords_model_delegate.h"
+#include "chrome/common/features.h"
 #include "components/password_manager/core/browser/password_store.h"
 #include "content/public/browser/web_contents_observer.h"
 #include "content/public/browser/web_contents_user_data.h"
@@ -57,7 +58,7 @@
   void OnLoginsChanged(
       const password_manager::PasswordStoreChangeList& changes) override;
 
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   // Set the state of the Omnibox icon, and possibly show the associated bubble
   // without user interaction.
   virtual void UpdateIconAndBubbleState(ManagePasswordsIconView* icon);
diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
index b9947de..5bfbf050 100644
--- a/chrome/browser/ui/tab_helpers.cc
+++ b/chrome/browser/ui/tab_helpers.cc
@@ -39,6 +39,7 @@
 #include "chrome/browser/ui/tab_contents/core_tab_helper.h"
 #include "chrome/browser/ui/tab_dialogs.h"
 #include "chrome/common/chrome_switches.h"
+#include "chrome/common/features.h"
 #include "components/autofill/content/browser/content_autofill_driver_factory.h"
 #include "components/autofill/core/browser/autofill_manager.h"
 #include "components/dom_distiller/content/browser/web_contents_main_frame_observer.h"
@@ -49,7 +50,7 @@
 #include "components/tracing/tracing_switches.h"
 #include "content/public/browser/web_contents.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/data_usage/data_use_tab_helper.h"
 #include "chrome/browser/android/voice_search_tab_helper.h"
 #include "chrome/browser/android/webapps/single_tab_mode_tab_helper.h"
@@ -69,7 +70,7 @@
 #include "components/pdf/browser/pdf_web_contents_helper.h"
 #include "components/ui/zoom/zoom_controller.h"
 #include "components/web_modal/web_contents_modal_dialog_manager.h"
-#endif  // defined(OS_ANDROID)
+#endif  // BUILDFLAG(ANDROID_JAVA_UI)
 
 #if defined(OS_WIN)
 #include "chrome/browser/ui/metro_pin_tab_helper_win.h"
@@ -131,7 +132,7 @@
   // SessionTabHelper comes first because it sets up the tab ID, and other
   // helpers may rely on that.
   SessionTabHelper::CreateForWebContents(web_contents);
-#if !defined(OS_ANDROID)
+#if !BUILDFLAG(ANDROID_JAVA_UI)
   // ZoomController comes before common tab helpers since ChromeAutofillClient
   // may want to register as a ZoomObserver with it.
   ui_zoom::ZoomController::CreateForWebContents(web_contents);
@@ -179,7 +180,7 @@
 
   // --- Platform-specific tab helpers ---
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   ContextMenuHelper::CreateForWebContents(web_contents);
   DataUseTabHelper::CreateForWebContents(web_contents);
   SingleTabModeTabHelper::CreateForWebContents(web_contents);
@@ -228,14 +229,14 @@
   SupervisedUserNavigationObserver::CreateForWebContents(web_contents);
 #endif
 
-#if defined(ENABLE_PRINTING) && !defined(OS_ANDROID)
+#if defined(ENABLE_PRINTING) && !BUILDFLAG(ANDROID_JAVA_UI)
 #if defined(ENABLE_PRINT_PREVIEW)
   printing::PrintViewManager::CreateForWebContents(web_contents);
   printing::PrintPreviewMessageHandler::CreateForWebContents(web_contents);
 #else
   printing::PrintViewManagerBasic::CreateForWebContents(web_contents);
 #endif  // defined(ENABLE_PRINT_PREVIEW)
-#endif  // defined(ENABLE_PRINTING) && !defined(OS_ANDROID)
+#endif  // defined(ENABLE_PRINTING) && !BUILDFLAG(ANDROID_JAVA_UI)
 
   bool enabled_distiller = base::CommandLine::ForCurrentProcess()->HasSwitch(
       switches::kEnableDomDistiller);
diff --git a/chrome/browser/ui/website_settings/website_settings.cc b/chrome/browser/ui/website_settings/website_settings.cc
index a82135a..c717aac 100644
--- a/chrome/browser/ui/website_settings/website_settings.cc
+++ b/chrome/browser/ui/website_settings/website_settings.cc
@@ -30,6 +30,7 @@
 #include "chrome/browser/ssl/chrome_ssl_host_state_delegate_factory.h"
 #include "chrome/browser/ui/website_settings/website_settings_ui.h"
 #include "chrome/common/chrome_switches.h"
+#include "chrome/common/features.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/common/url_constants.h"
 #include "chrome/grit/chromium_strings.h"
@@ -313,7 +314,7 @@
     const GURL& url,
     const SecurityStateModel::SecurityInfo& security_info) {
   bool isChromeUINativeScheme = false;
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   isChromeUINativeScheme = url.SchemeIs(chrome::kChromeUINativeScheme);
 #endif
 
diff --git a/chrome/browser/ui/webui/browsing_history_handler.cc b/chrome/browser/ui/webui/browsing_history_handler.cc
index 1ba3f77..86b83ff 100644
--- a/chrome/browser/ui/webui/browsing_history_handler.cc
+++ b/chrome/browser/ui/webui/browsing_history_handler.cc
@@ -28,6 +28,7 @@
 #include "chrome/browser/ui/browser_finder.h"
 #include "chrome/browser/ui/chrome_pages.h"
 #include "chrome/browser/ui/webui/favicon_source.h"
+#include "chrome/common/features.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/bookmarks/browser/bookmark_model.h"
@@ -59,7 +60,7 @@
 #include "chrome/browser/supervised_user/supervised_user_url_filter.h"
 #endif
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/chrome_application.h"
 #endif
 
@@ -544,7 +545,7 @@
 
 void BrowsingHistoryHandler::HandleClearBrowsingData(
     const base::ListValue* args) {
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   chrome::android::ChromeApplication::OpenClearBrowsingData(
       web_ui()->GetWebContents());
 #else
diff --git a/chrome/browser/ui/webui/memory_internals/memory_internals_proxy.cc b/chrome/browser/ui/webui/memory_internals/memory_internals_proxy.cc
index dd80abee..5ce9a26e 100644
--- a/chrome/browser/ui/webui/memory_internals/memory_internals_proxy.cc
+++ b/chrome/browser/ui/webui/memory_internals/memory_internals_proxy.cc
@@ -31,6 +31,7 @@
 #include "chrome/browser/ui/browser_iterator.h"
 #include "chrome/browser/ui/tab_contents/tab_contents_iterator.h"
 #include "chrome/browser/ui/webui/memory_internals/memory_internals_handler.h"
+#include "chrome/common/features.h"
 #include "content/public/browser/navigation_controller.h"
 #include "content/public/browser/navigation_entry.h"
 #include "content/public/browser/render_process_host.h"
@@ -82,7 +83,7 @@
 
 void GetAllWebContents(std::set<content::WebContents*>* web_contents) {
   // Add all the existing WebContentses.
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   for (TabModelList::const_iterator iter = TabModelList::begin();
        iter != TabModelList::end(); ++iter) {
     TabModel* model = *iter;
@@ -223,7 +224,7 @@
 void MemoryInternalsProxy::RequestRendererDetails() {
   renderer_details_->Clear();
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   for (TabModelList::const_iterator iter = TabModelList::begin();
        iter != TabModelList::end(); ++iter) {
     TabModel* model = *iter;
diff --git a/chrome/browser/ui/webui/net_export_ui.cc b/chrome/browser/ui/webui/net_export_ui.cc
index e5f96ea..f5de774 100644
--- a/chrome/browser/ui/webui/net_export_ui.cc
+++ b/chrome/browser/ui/webui/net_export_ui.cc
@@ -13,6 +13,7 @@
 #include "base/values.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/common/features.h"
 #include "chrome/common/url_constants.h"
 #include "components/grit/components_resources.h"
 #include "components/net_log/chrome_net_log.h"
@@ -25,7 +26,7 @@
 #include "content/public/browser/web_ui_data_source.h"
 #include "content/public/browser/web_ui_message_handler.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "chrome/browser/android/intent_helper.h"
 #endif
 
@@ -225,7 +226,7 @@
     return;
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   std::string email;
   std::string subject = "net_internals_log";
   std::string title = "Issue number: ";
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index e76071b8..df43320 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -22,8 +22,600 @@
       'browser/about_flags.h',
       'browser/after_startup_task_utils.cc',
       'browser/after_startup_task_utils.h',
+      'browser/app_controller_mac.h',
+      'browser/app_controller_mac.mm',
+      'browser/app_icon_win.cc',
+      'browser/app_icon_win.h',
+      'browser/app_mode/app_mode_utils.cc',
+      'browser/app_mode/app_mode_utils.h',
+      'browser/autofill/options_util.cc',
+      'browser/autofill/options_util.h',
+      'browser/autofill/personal_data_manager_factory.cc',
+      'browser/autofill/personal_data_manager_factory.h',
+      'browser/autofill/risk_util.cc',
+      'browser/autofill/risk_util.h',
+      'browser/autofill/validation_rules_storage_factory.cc',
+      'browser/autofill/validation_rules_storage_factory.h',
+      'browser/background_sync/background_sync_controller_factory.cc',
+      'browser/background_sync/background_sync_controller_factory.h',
+      'browser/background_sync/background_sync_controller_impl.cc',
+      'browser/background_sync/background_sync_controller_impl.h',
+      'browser/bad_message.cc',
+      'browser/bad_message.h',
+      'browser/banners/app_banner_data_fetcher.cc',
+      'browser/banners/app_banner_data_fetcher.h',
+      'browser/banners/app_banner_debug_log.cc',
+      'browser/banners/app_banner_debug_log.h',
+      'browser/banners/app_banner_manager.cc',
+      'browser/banners/app_banner_manager.h',
+      'browser/banners/app_banner_metrics.cc',
+      'browser/banners/app_banner_metrics.h',
+      'browser/banners/app_banner_settings_helper.cc',
+      'browser/banners/app_banner_settings_helper.h',
+      'browser/bitmap_fetcher/bitmap_fetcher.cc',
+      'browser/bitmap_fetcher/bitmap_fetcher.h',
+      'browser/bitmap_fetcher/bitmap_fetcher_delegate.h',
+      'browser/bitmap_fetcher/bitmap_fetcher_service.cc',
+      'browser/bitmap_fetcher/bitmap_fetcher_service.h',
+      'browser/bitmap_fetcher/bitmap_fetcher_service_factory.cc',
+      'browser/bitmap_fetcher/bitmap_fetcher_service_factory.h',
+      'browser/browser_about_handler.cc',
+      'browser/browser_about_handler.h',
+      'browser/browser_shutdown.cc',
+      'browser/browser_shutdown.h',
+      'browser/browser_util_win.cc',
+      'browser/browser_util_win.h',
+      'browser/browsing_data/autofill_counter.cc',
+      'browser/browsing_data/autofill_counter.h',
+      'browser/browsing_data/browsing_data_appcache_helper.cc',
+      'browser/browsing_data/browsing_data_appcache_helper.h',
+      'browser/browsing_data/browsing_data_cache_storage_helper.cc',
+      'browser/browsing_data/browsing_data_cache_storage_helper.h',
+      'browser/browsing_data/browsing_data_channel_id_helper.cc',
+      'browser/browsing_data/browsing_data_channel_id_helper.h',
+      'browser/browsing_data/browsing_data_cookie_helper.cc',
+      'browser/browsing_data/browsing_data_cookie_helper.h',
+      'browser/browsing_data/browsing_data_counter.cc',
+      'browser/browsing_data/browsing_data_counter.h',
+      'browser/browsing_data/browsing_data_database_helper.cc',
+      'browser/browsing_data/browsing_data_database_helper.h',
+      'browser/browsing_data/browsing_data_file_system_helper.cc',
+      'browser/browsing_data/browsing_data_file_system_helper.h',
+      'browser/browsing_data/browsing_data_helper.cc',
+      'browser/browsing_data/browsing_data_helper.h',
+      'browser/browsing_data/browsing_data_indexed_db_helper.cc',
+      'browser/browsing_data/browsing_data_indexed_db_helper.h',
+      'browser/browsing_data/browsing_data_local_storage_helper.cc',
+      'browser/browsing_data/browsing_data_local_storage_helper.h',
+      'browser/browsing_data/browsing_data_quota_helper.cc',
+      'browser/browsing_data/browsing_data_quota_helper.h',
+      'browser/browsing_data/browsing_data_quota_helper_impl.cc',
+      'browser/browsing_data/browsing_data_quota_helper_impl.h',
+      'browser/browsing_data/browsing_data_remover.cc',
+      'browser/browsing_data/browsing_data_remover.h',
+      'browser/browsing_data/browsing_data_service_worker_helper.cc',
+      'browser/browsing_data/browsing_data_service_worker_helper.h',
+      'browser/browsing_data/cache_counter.cc',
+      'browser/browsing_data/cache_counter.h',
+      'browser/browsing_data/canonical_cookie_hash.cc',
+      'browser/browsing_data/canonical_cookie_hash.h',
+      'browser/browsing_data/cookies_tree_model.cc',
+      'browser/browsing_data/cookies_tree_model.h',
+      'browser/browsing_data/history_counter.cc',
+      'browser/browsing_data/history_counter.h',
+      'browser/browsing_data/local_data_container.cc',
+      'browser/browsing_data/local_data_container.h',
+      'browser/browsing_data/passwords_counter.cc',
+      'browser/browsing_data/passwords_counter.h',
+      'browser/character_encoding.cc',
+      'browser/character_encoding.h',
+      'browser/chrome_browser_application_mac.h',
+      'browser/chrome_browser_application_mac.mm',
+      'browser/chrome_browser_field_trials.cc',
+      'browser/chrome_browser_field_trials.h',
+      'browser/chrome_browser_main.cc',
+      'browser/chrome_browser_main.h',
+      'browser/chrome_browser_main_android.cc',
+      'browser/chrome_browser_main_android.h',
+      'browser/chrome_browser_main_extra_parts.h',
+      'browser/chrome_browser_main_linux.cc',
+      'browser/chrome_browser_main_linux.h',
+      'browser/chrome_browser_main_mac.h',
+      'browser/chrome_browser_main_mac.mm',
+      'browser/chrome_browser_main_win.cc',
+      'browser/chrome_browser_main_win.h',
+      'browser/chrome_child_process_watcher.cc',
+      'browser/chrome_child_process_watcher.h',
+      'browser/chrome_content_browser_client.cc',
+      'browser/chrome_content_browser_client.h',
+      'browser/chrome_content_browser_client_parts.h',
+      'browser/chrome_device_client.cc',
+      'browser/chrome_device_client.h',
+      'browser/chrome_elf_init_win.cc',
+      'browser/chrome_elf_init_win.h',
+      'browser/chrome_net_benchmarking_message_filter.cc',
+      'browser/chrome_net_benchmarking_message_filter.h',
+      'browser/chrome_notification_types.h',
+      'browser/chrome_quota_permission_context.cc',
+      'browser/chrome_quota_permission_context.h',
+      'browser/chrome_select_file_dialog_factory_win.cc',
+      'browser/chrome_select_file_dialog_factory_win.h',
+      'browser/command_observer.h',
+      'browser/command_updater.cc',
+      'browser/command_updater.h',
+      'browser/command_updater_delegate.h',
+      'browser/component_updater/caps_installer_win.cc',
+      'browser/component_updater/caps_installer_win.h',
+      'browser/component_updater/chrome_component_updater_configurator.cc',
+      'browser/component_updater/chrome_component_updater_configurator.h',
+      'browser/component_updater/cld_component_installer.cc',
+      'browser/component_updater/cld_component_installer.h',
+      'browser/component_updater/component_patcher_operation_out_of_process.cc',
+      'browser/component_updater/component_patcher_operation_out_of_process.h',
+      'browser/component_updater/component_updater_resource_throttle.cc',
+      'browser/component_updater/component_updater_resource_throttle.h',
+      'browser/component_updater/ev_whitelist_component_installer.cc',
+      'browser/component_updater/ev_whitelist_component_installer.h',
+      'browser/component_updater/pnacl_component_installer.cc',
+      'browser/component_updater/pnacl_component_installer.h',
+      'browser/component_updater/recovery_component_installer.cc',
+      'browser/component_updater/recovery_component_installer.h',
+      'browser/component_updater/supervised_user_whitelist_installer.cc',
+      'browser/component_updater/supervised_user_whitelist_installer.h',
+      'browser/component_updater/sw_reporter_installer_win.cc',
+      'browser/component_updater/sw_reporter_installer_win.h',
+      'browser/component_updater/swiftshader_component_installer.cc',
+      'browser/component_updater/swiftshader_component_installer.h',
+      'browser/crash_upload_list.cc',
+      'browser/crash_upload_list.h',
+      'browser/custom_handlers/protocol_handler_registry.cc',
+      'browser/custom_handlers/protocol_handler_registry.h',
+      'browser/custom_handlers/protocol_handler_registry_factory.cc',
+      'browser/custom_handlers/protocol_handler_registry_factory.h',
+      'browser/defaults.cc',
+      'browser/defaults.h',
+      'browser/dom_distiller/dom_distiller_service_factory.cc',
+      'browser/dom_distiller/dom_distiller_service_factory.h',
+      'browser/dom_distiller/lazy_dom_distiller_service.cc',
+      'browser/dom_distiller/lazy_dom_distiller_service.h',
+      'browser/dom_distiller/profile_utils.cc',
+      'browser/dom_distiller/profile_utils.h',
+      'browser/dom_distiller/tab_utils.cc',
+      'browser/dom_distiller/tab_utils.h',
+      'browser/domain_reliability/service_factory.cc',
+      'browser/domain_reliability/service_factory.h',
+      'browser/download/all_download_item_notifier.cc',
+      'browser/download/all_download_item_notifier.h',
+      'browser/download/chrome_download_manager_delegate.cc',
+      'browser/download/chrome_download_manager_delegate.h',
+      'browser/download/download_crx_util_android.cc',
+      'browser/download/download_extensions.cc',
+      'browser/download/download_extensions.h',
+      'browser/download/download_file_picker.cc',
+      'browser/download/download_file_picker.h',
+      'browser/download/download_history.cc',
+      'browser/download/download_history.h',
+      'browser/download/download_item_model.cc',
+      'browser/download/download_item_model.h',
+      'browser/download/download_path_reservation_tracker.cc',
+      'browser/download/download_path_reservation_tracker.h',
+      'browser/download/download_prefs.cc',
+      'browser/download/download_prefs.h',
+      'browser/download/download_query.cc',
+      'browser/download/download_query.h',
+      'browser/download/download_request_limiter.cc',
+      'browser/download/download_request_limiter.h',
+      'browser/download/download_resource_throttle.cc',
+      'browser/download/download_resource_throttle.h',
+      'browser/download/download_service.cc',
+      'browser/download/download_service.h',
+      'browser/download/download_service_factory.cc',
+      'browser/download/download_service_factory.h',
+      'browser/download/download_service_impl.cc',
+      'browser/download/download_service_impl.h',
+      'browser/download/download_started_animation.h',
+      'browser/download/download_stats.cc',
+      'browser/download/download_stats.h',
+      'browser/download/download_status_updater.cc',
+      'browser/download/download_status_updater.h',
+      'browser/download/download_status_updater_mac.mm',
+      'browser/download/download_status_updater_win.cc',
+      'browser/download/download_target_determiner.cc',
+      'browser/download/download_target_determiner.h',
+      'browser/download/download_target_determiner_delegate.h',
+      'browser/download/download_target_info.h',
+      'browser/download/download_ui_controller.cc',
+      'browser/download/download_ui_controller.h',
+      'browser/download/drag_download_item.h',
+      'browser/download/save_package_file_picker.cc',
+      'browser/download/save_package_file_picker.h',
+      'browser/enumerate_modules_model_win.cc',
+      'browser/enumerate_modules_model_win.h',
+      # Oh hey, all the cool browser/extensions files are hanging out in
+      # chrome/chrome_browser_extensions.gypi.
+      'browser/external_protocol/external_protocol_handler.cc',
+      'browser/external_protocol/external_protocol_handler.h',
+      'browser/external_protocol/external_protocol_observer.cc',
+      'browser/external_protocol/external_protocol_observer.h',
+      'browser/file_select_helper.cc',
+      'browser/file_select_helper.h',
+      'browser/file_select_helper_mac.mm',
+      'browser/fullscreen.h',
+      'browser/fullscreen_chromeos.cc',
+      'browser/fullscreen_mac.mm',
+      'browser/fullscreen_win.cc',
+      'browser/geolocation/chrome_access_token_store.cc',
+      'browser/geolocation/chrome_access_token_store.h',
+      'browser/geolocation/geolocation_permission_context.cc',
+      'browser/geolocation/geolocation_permission_context.h',
+      'browser/geolocation/geolocation_permission_context_android.cc',
+      'browser/geolocation/geolocation_permission_context_android.h',
+      'browser/geolocation/geolocation_permission_context_extensions.cc',
+      'browser/geolocation/geolocation_permission_context_extensions.h',
+      'browser/geolocation/geolocation_permission_context_factory.cc',
+      'browser/geolocation/geolocation_permission_context_factory.h',
+      'browser/geolocation/geolocation_prefs.cc',
+      'browser/geolocation/geolocation_prefs.h',
+      'browser/global_keyboard_shortcuts_mac.h',
+      'browser/global_keyboard_shortcuts_mac.mm',
+      'browser/gpu/gl_string_manager.cc',
+      'browser/gpu/gl_string_manager.h',
+      'browser/gpu/gpu_feature_checker.cc',
+      'browser/gpu/gpu_feature_checker.h',
+      'browser/gpu/gpu_mode_manager.cc',
+      'browser/gpu/gpu_mode_manager.h',
+      'browser/gpu/three_d_api_observer.cc',
+      'browser/gpu/three_d_api_observer.h',
+      'browser/icon_loader.cc',
+      'browser/icon_loader.h',
+      'browser/icon_loader_android.cc',
+      'browser/icon_loader_chromeos.cc',
+      'browser/icon_loader_mac.mm',
+      'browser/icon_loader_win.cc',
+      'browser/icon_manager.cc',
+      'browser/icon_manager.h',
+      'browser/image_decoder.cc',
+      'browser/image_decoder.h',
+      'browser/image_holder.cc',
+      'browser/image_holder.h',
+      'browser/infobars/infobar_responder.cc',
+      'browser/infobars/infobar_responder.h',
+      'browser/infobars/infobar_service.cc',
+      'browser/infobars/infobar_service.h',
+      'browser/infobars/insecure_content_infobar_delegate.cc',
+      'browser/infobars/insecure_content_infobar_delegate.h',
+      'browser/install_verification/win/imported_module_verification.cc',
+      'browser/install_verification/win/imported_module_verification.h',
+      'browser/install_verification/win/install_verification.cc',
+      'browser/install_verification/win/install_verification.h',
+      'browser/install_verification/win/loaded_module_verification.cc',
+      'browser/install_verification/win/loaded_module_verification.h',
+      'browser/install_verification/win/loaded_modules_snapshot.cc',
+      'browser/install_verification/win/loaded_modules_snapshot.h',
+      'browser/install_verification/win/module_ids.cc',
+      'browser/install_verification/win/module_ids.h',
+      'browser/install_verification/win/module_info.h',
+      'browser/install_verification/win/module_list.cc',
+      'browser/install_verification/win/module_list.h',
+      'browser/install_verification/win/module_verification_common.cc',
+      'browser/install_verification/win/module_verification_common.h',
+      'browser/interests/interests_fetcher.cc',
+      'browser/interests/interests_fetcher.h',
+      'browser/internal_auth.cc',
+      'browser/internal_auth.h',
+      'browser/interstitials/chrome_controller_client.cc',
+      'browser/interstitials/chrome_controller_client.h',
+      'browser/interstitials/chrome_metrics_helper.cc',
+      'browser/interstitials/chrome_metrics_helper.h',
+      'browser/interstitials/security_interstitial_page.cc',
+      'browser/interstitials/security_interstitial_page.h',
+      'browser/intranet_redirect_detector.cc',
+      'browser/intranet_redirect_detector.h',
+      'browser/invalidation/profile_invalidation_provider_factory.cc',
+      'browser/invalidation/profile_invalidation_provider_factory.h',
+      'browser/io_thread.cc',
+      'browser/io_thread.h',
+      'browser/jumplist_updater_win.cc',
+      'browser/jumplist_updater_win.h',
+      'browser/jumplist_win.cc',
+      'browser/jumplist_win.h',
+      'browser/lifetime/application_lifetime.cc',
+      'browser/lifetime/application_lifetime.h',
+      'browser/lifetime/application_lifetime_mac.mm',
+      'browser/lifetime/application_lifetime_win.cc',
+      'browser/mac/bluetooth_utility.h',
+      'browser/mac/bluetooth_utility.mm',
+      'browser/mac/dock.h',
+      'browser/mac/dock.mm',
+      'browser/mac/install_from_dmg.h',
+      'browser/mac/install_from_dmg.mm',
+      'browser/mac/keystone_glue.h',
+      'browser/mac/keystone_glue.mm',
+      'browser/mac/keystone_registration.h',
+      'browser/mac/keystone_registration.mm',
+      'browser/mac/mac_startup_profiler.cc',
+      'browser/mac/mac_startup_profiler.h',
+      'browser/mac/master_prefs.h',
+      'browser/mac/master_prefs.mm',
+      'browser/mac/relauncher.cc',
+      'browser/mac/relauncher.h',
+      'browser/mac/security_wrappers.cc',
+      'browser/mac/security_wrappers.h',
+      'browser/manifest/manifest_icon_downloader.cc',
+      'browser/manifest/manifest_icon_downloader.h',
+      'browser/manifest/manifest_icon_selector.cc',
+      'browser/manifest/manifest_icon_selector.h',
+      'browser/media/desktop_media_list.h',
+      'browser/media/desktop_media_picker.h',
+      'browser/media/desktop_streams_registry.cc',
+      'browser/media/desktop_streams_registry.h',
+      'browser/media/media_access_handler.h',
+      'browser/media/media_capture_devices_dispatcher.cc',
+      'browser/media/media_capture_devices_dispatcher.h',
+      'browser/media/media_device_id_salt.cc',
+      'browser/media/media_device_id_salt.h',
+      'browser/media/media_permission.cc',
+      'browser/media/media_permission.h',
+      'browser/media/media_stream_camera_permission_context_factory.cc',
+      'browser/media/media_stream_camera_permission_context_factory.h',
+      'browser/media/media_stream_capture_indicator.cc',
+      'browser/media/media_stream_capture_indicator.h',
+      'browser/media/media_stream_device_permission_context.cc',
+      'browser/media/media_stream_device_permission_context.h',
+      'browser/media/media_stream_device_permissions.cc',
+      'browser/media/media_stream_device_permissions.h',
+      'browser/media/media_stream_devices_controller.cc',
+      'browser/media/media_stream_devices_controller.h',
+      'browser/media/media_stream_mic_permission_context_factory.cc',
+      'browser/media/media_stream_mic_permission_context_factory.h',
+      'browser/media/media_url_constants.cc',
+      'browser/media/media_url_constants.h',
+      'browser/media/midi_permission_context.cc',
+      'browser/media/midi_permission_context.h',
+      'browser/media/midi_permission_context_factory.cc',
+      'browser/media/midi_permission_context_factory.h',
+      'browser/media/native_desktop_media_list.cc',
+      'browser/media/native_desktop_media_list.h',
+      'browser/media/permission_bubble_media_access_handler.cc',
+      'browser/media/permission_bubble_media_access_handler.h',
+      'browser/media/router/media_router_feature.cc',
+      'browser/media/router/media_router_feature.h',
+      # TODO(brettw) should this go with the webrtc sources?
+      'browser/media/webrtc_log_list.cc',
+      'browser/media/webrtc_log_list.h',
+      'browser/memory_details.cc',
+      'browser/memory_details.h',
+      'browser/memory_details_android.cc',
+      'browser/memory_details_linux.cc',
+      'browser/memory_details_mac.cc',
+      'browser/memory_details_win.cc',
+      'browser/mod_pagespeed/mod_pagespeed_metrics.cc',
+      'browser/mod_pagespeed/mod_pagespeed_metrics.h',
+      'browser/native_window_notification_source.h',
+      'browser/net/predictor_tab_helper.cc',
+      'browser/net/predictor_tab_helper.h',
+      'browser/ntp_snippets/ntp_snippets_service_factory.cc',
+      'browser/ntp_snippets/ntp_snippets_service_factory.h',
+      'browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc',
+      'browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.h',
+      'browser/page_load_metrics/observers/google_captcha_observer.cc',
+      'browser/page_load_metrics/observers/google_captcha_observer.h',
+      'browser/page_load_metrics/observers/stale_while_revalidate_metrics_observer.cc',
+      'browser/page_load_metrics/observers/stale_while_revalidate_metrics_observer.h',
+      'browser/page_load_metrics/page_load_metrics_initialize.cc',
+      'browser/page_load_metrics/page_load_metrics_initialize.h',
+      'browser/performance_monitor/performance_monitor.cc',
+      'browser/performance_monitor/performance_monitor.h',
+      'browser/performance_monitor/process_metrics_history.cc',
+      'browser/performance_monitor/process_metrics_history.h',
+      'browser/platform_util.h',
+      'browser/platform_util_chromeos.cc',
+      'browser/platform_util_internal.h',
+      'browser/platform_util_mac.mm',
+      'browser/platform_util_win.cc',
+      'browser/prefetch/prefetch.cc',
+      'browser/prefetch/prefetch.h',
+      'browser/prefetch/prefetch_field_trial.cc',
+      'browser/prefetch/prefetch_field_trial.h',
+      'browser/prerender/prerender_config.cc',
+      'browser/prerender/prerender_config.h',
+      'browser/prerender/prerender_contents.cc',
+      'browser/prerender/prerender_contents.h',
+      'browser/prerender/prerender_field_trial.cc',
+      'browser/prerender/prerender_field_trial.h',
+      'browser/prerender/prerender_final_status.cc',
+      'browser/prerender/prerender_final_status.h',
+      'browser/prerender/prerender_handle.cc',
+      'browser/prerender/prerender_handle.h',
+      'browser/prerender/prerender_histograms.cc',
+      'browser/prerender/prerender_histograms.h',
+      'browser/prerender/prerender_history.cc',
+      'browser/prerender/prerender_history.h',
+      'browser/prerender/prerender_link_manager.cc',
+      'browser/prerender/prerender_link_manager.h',
+      'browser/prerender/prerender_link_manager_factory.cc',
+      'browser/prerender/prerender_link_manager_factory.h',
+      'browser/prerender/prerender_manager.cc',
+      'browser/prerender/prerender_manager.h',
+      'browser/prerender/prerender_manager_factory.cc',
+      'browser/prerender/prerender_manager_factory.h',
+      'browser/prerender/prerender_message_filter.cc',
+      'browser/prerender/prerender_message_filter.h',
+      'browser/prerender/prerender_origin.cc',
+      'browser/prerender/prerender_origin.h',
+      'browser/prerender/prerender_resource_throttle.cc',
+      'browser/prerender/prerender_resource_throttle.h',
+      'browser/prerender/prerender_tab_helper.cc',
+      'browser/prerender/prerender_tab_helper.h',
+      'browser/prerender/prerender_util.cc',
+      'browser/prerender/prerender_util.h',
+      'browser/private_working_set_snapshot.h',
+      'browser/private_working_set_snapshot_win.cc',
+      'browser/process_info_snapshot.h',
+      'browser/process_info_snapshot_mac.cc',
+      'browser/process_resource_usage.cc',
+      'browser/process_resource_usage.h',
+      'browser/process_singleton.h',
+      'browser/process_singleton_win.cc',
+      'browser/push_messaging/push_messaging_app_identifier.cc',
+      'browser/push_messaging/push_messaging_app_identifier.h',
+      'browser/push_messaging/push_messaging_constants.cc',
+      'browser/push_messaging/push_messaging_constants.h',
+      'browser/push_messaging/push_messaging_permission_context.cc',
+      'browser/push_messaging/push_messaging_permission_context.h',
+      'browser/push_messaging/push_messaging_permission_context_factory.cc',
+      'browser/push_messaging/push_messaging_permission_context_factory.h',
+      'browser/push_messaging/push_messaging_service_factory.cc',
+      'browser/push_messaging/push_messaging_service_factory.h',
+      'browser/push_messaging/push_messaging_service_impl.cc',
+      'browser/push_messaging/push_messaging_service_impl.h',
+      'browser/renderer_context_menu/context_menu_content_type_factory.cc',
+      'browser/renderer_context_menu/context_menu_content_type_factory.h',
+      'browser/renderer_context_menu/context_menu_content_type_panel.cc',
+      'browser/renderer_context_menu/context_menu_content_type_panel.h',
+      'browser/renderer_host/chrome_render_message_filter.cc',
+      'browser/renderer_host/chrome_render_message_filter.h',
+      'browser/renderer_host/chrome_render_widget_host_view_mac_delegate.h',
+      'browser/renderer_host/chrome_render_widget_host_view_mac_delegate.mm',
+      'browser/renderer_host/chrome_render_widget_host_view_mac_history_swiper.h',
+      'browser/renderer_host/chrome_render_widget_host_view_mac_history_swiper.mm',
+      'browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc',
+      'browser/renderer_host/chrome_resource_dispatcher_host_delegate.h',
+      'browser/renderer_host/thread_hop_resource_throttle.cc',
+      'browser/renderer_host/thread_hop_resource_throttle.h',
+      'browser/renderer_preferences_util.cc',
+      'browser/renderer_preferences_util.h',
+      'browser/resources_util.cc',
+      'browser/resources_util.h',
+      'browser/safe_browsing/safe_browsing_tab_observer.cc',
+      'browser/safe_browsing/safe_browsing_tab_observer.h',
+      'browser/safe_browsing/srt_fetcher_win.cc',
+      'browser/safe_browsing/srt_fetcher_win.h',
+      'browser/safe_browsing/srt_field_trial_win.cc',
+      'browser/safe_browsing/srt_field_trial_win.h',
+      'browser/safe_browsing/srt_global_error_win.cc',
+      'browser/safe_browsing/srt_global_error_win.h',
+      'browser/search/iframe_source.cc',
+      'browser/search/iframe_source.h',
+      'browser/search/instant_io_context.cc',
+      'browser/search/instant_io_context.h',
+      'browser/search/instant_service.cc',
+      'browser/search/instant_service.h',
+      'browser/search/instant_service_factory.cc',
+      'browser/search/instant_service_factory.h',
+      'browser/search/instant_service_observer.cc',
+      'browser/search/instant_service_observer.h',
+      'browser/search/most_visited_iframe_source.cc',
+      'browser/search/most_visited_iframe_source.h',
+      'browser/search/search.cc',
+      'browser/search/search.h',
+      'browser/search/suggestions/image_fetcher_impl.cc',
+      'browser/search/suggestions/image_fetcher_impl.h',
+      'browser/search/suggestions/suggestions_service_factory.cc',
+      'browser/search/suggestions/suggestions_service_factory.h',
+      'browser/search/suggestions/suggestions_source.cc',
+      'browser/search/suggestions/suggestions_source.h',
+      'browser/search/thumbnail_source.cc',
+      'browser/search/thumbnail_source.h',
+      'browser/shell_integration.cc',
+      'browser/shell_integration.h',
+      'browser/shell_integration_android.cc',
+      'browser/shell_integration_chromeos.cc',
+      'browser/shell_integration_mac.mm',
+      'browser/shell_integration_win.cc',
+      'browser/site_details.cc',
+      'browser/site_details.h',
+      'browser/speech/chrome_speech_recognition_manager_delegate.cc',
+      'browser/speech/chrome_speech_recognition_manager_delegate.h',
+      'browser/speech/tts_android.cc',
+      'browser/speech/tts_android.h',
+      'browser/speech/tts_chromeos.cc',
+      'browser/speech/tts_controller.h',
+      'browser/speech/tts_controller_impl.cc',
+      'browser/speech/tts_controller_impl.h',
+      'browser/speech/tts_mac.mm',
+      'browser/speech/tts_message_filter.cc',
+      'browser/speech/tts_message_filter.h',
+      'browser/speech/tts_platform.cc',
+      'browser/speech/tts_platform.h',
+      'browser/speech/tts_win.cc',
+      'browser/stack_sampling_configuration.cc',
+      'browser/stack_sampling_configuration.h',
+      'browser/status_icons/status_icon.cc',
+      'browser/status_icons/status_icon.h',
+      'browser/status_icons/status_icon_menu_model.cc',
+      'browser/status_icons/status_icon_menu_model.h',
+      'browser/status_icons/status_icon_observer.h',
+      'browser/status_icons/status_tray.cc',
+      'browser/status_icons/status_tray.h',
+      'browser/storage/durable_storage_permission_context.cc',
+      'browser/storage/durable_storage_permission_context.h',
+      'browser/storage/durable_storage_permission_context_factory.cc',
+      'browser/storage/durable_storage_permission_context_factory.h',
+      'browser/tab_contents/navigation_metrics_recorder.cc',
+      'browser/tab_contents/navigation_metrics_recorder.h',
+      'browser/tab_contents/retargeting_details.h',
+      'browser/tab_contents/tab_util.cc',
+      'browser/tab_contents/tab_util.h',
+      'browser/task_management/web_contents_tags.cc',
+      'browser/task_management/web_contents_tags.h',
+      'browser/task_profiler/task_profiler_data_serializer.cc',
+      'browser/task_profiler/task_profiler_data_serializer.h',
+      'browser/thumbnails/content_analysis.cc',
+      'browser/thumbnails/content_analysis.h',
+      'browser/thumbnails/content_based_thumbnailing_algorithm.cc',
+      'browser/thumbnails/content_based_thumbnailing_algorithm.h',
+      'browser/thumbnails/simple_thumbnail_crop.cc',
+      'browser/thumbnails/simple_thumbnail_crop.h',
+      'browser/thumbnails/thumbnail_list_source.cc',
+      'browser/thumbnails/thumbnail_list_source.h',
+      'browser/thumbnails/thumbnail_service.h',
+      'browser/thumbnails/thumbnail_service_factory.cc',
+      'browser/thumbnails/thumbnail_service_factory.h',
+      'browser/thumbnails/thumbnail_service_impl.cc',
+      'browser/thumbnails/thumbnail_service_impl.h',
+      'browser/thumbnails/thumbnail_tab_helper.cc',
+      'browser/thumbnails/thumbnail_tab_helper.h',
+      'browser/thumbnails/thumbnailing_algorithm.h',
+      'browser/thumbnails/thumbnailing_context.cc',
+      'browser/thumbnails/thumbnailing_context.h',
+      'browser/tracing/background_tracing_field_trial.cc',
+      'browser/tracing/background_tracing_field_trial.h',
+      'browser/tracing/crash_service_uploader.cc',
+      'browser/tracing/crash_service_uploader.h',
+      'browser/tracing/navigation_tracing.cc',
+      'browser/tracing/navigation_tracing.h',
+      'browser/translate/chrome_translate_client.cc',
+      'browser/translate/chrome_translate_client.h',
+      'browser/translate/translate_accept_languages_factory.cc',
+      'browser/translate/translate_accept_languages_factory.h',
+      'browser/translate/translate_service.cc',
+      'browser/translate/translate_service.h',
+      'browser/update_client/chrome_update_query_params_delegate.cc',
+      'browser/update_client/chrome_update_query_params_delegate.h',
+      'browser/usb/usb_chooser_context.cc',
+      'browser/usb/usb_chooser_context.h',
+      'browser/usb/usb_chooser_context_factory.cc',
+      'browser/usb/usb_chooser_context_factory.h',
+      'browser/usb/usb_tab_helper.cc',
+      'browser/usb/usb_tab_helper.h',
+      'browser/usb/web_usb_permission_provider.cc',
+      'browser/usb/web_usb_permission_provider.h',
+      'browser/web_data_service_factory.cc',
+      'browser/web_data_service_factory.h',
+    ],
+    # Android sources included regardless of android_java_ui.
+    'chrome_browser_android_sources': [
+      'browser/media/protected_media_identifier_permission_context.cc',
+      'browser/media/protected_media_identifier_permission_context.h',
+      'browser/media/protected_media_identifier_permission_context_factory.cc',
+      'browser/media/protected_media_identifier_permission_context_factory.h',
+    ],
+    # Browser sources used when android_java_ui is enabled.
+    'chrome_browser_android_java_ui_sources': [
       'browser/after_startup_task_utils_android.cc',
       'browser/after_startup_task_utils_android.h',
+      'browser/platform_util_android.cc',
       'browser/android/accessibility/font_size_prefs_android.cc',
       'browser/android/accessibility/font_size_prefs_android.h',
       'browser/android/accessibility_util.cc',
@@ -33,6 +625,8 @@
       'browser/android/android_theme_resources.h',
       'browser/android/appmenu/app_menu_drag_helper.cc',
       'browser/android/appmenu/app_menu_drag_helper.h',
+      'browser/android/background_sync_launcher_android.cc',
+      'browser/android/background_sync_launcher_android.h',
       'browser/android/banners/app_banner_data_fetcher_android.cc',
       'browser/android/banners/app_banner_data_fetcher_android.h',
       'browser/android/banners/app_banner_infobar_delegate_android.cc',
@@ -106,6 +700,8 @@
       'browser/android/data_usage/data_use_tab_helper.h',
       'browser/android/data_usage/data_use_tab_model.cc',
       'browser/android/data_usage/data_use_tab_model.h',
+      'browser/android/data_usage/data_use_tab_ui_manager_android.cc',
+      'browser/android/data_usage/data_use_tab_ui_manager_android.h',
       'browser/android/data_usage/data_use_ui_tab_model.cc',
       'browser/android/data_usage/data_use_ui_tab_model.h',
       'browser/android/data_usage/data_use_ui_tab_model_factory.cc',
@@ -278,341 +874,22 @@
       'browser/android/webapps/single_tab_mode_tab_helper.h',
       'browser/android/webapps/webapp_registry.cc',
       'browser/android/webapps/webapp_registry.h',
-      'browser/app_controller_mac.h',
-      'browser/app_controller_mac.mm',
-      'browser/app_icon_win.cc',
-      'browser/app_icon_win.h',
-      'browser/app_mode/app_mode_utils.cc',
-      'browser/app_mode/app_mode_utils.h',
       'browser/autofill/android/personal_data_manager_android.cc',
       'browser/autofill/android/personal_data_manager_android.h',
-      'browser/autofill/options_util.cc',
-      'browser/autofill/options_util.h',
-      'browser/autofill/personal_data_manager_factory.cc',
-      'browser/autofill/personal_data_manager_factory.h',
-      'browser/autofill/risk_util.cc',
-      'browser/autofill/risk_util.h',
-      'browser/autofill/validation_rules_storage_factory.cc',
-      'browser/autofill/validation_rules_storage_factory.h',
-      'browser/background_sync/background_sync_controller_factory.cc',
-      'browser/background_sync/background_sync_controller_factory.h',
-      'browser/background_sync/background_sync_controller_impl.cc',
-      'browser/background_sync/background_sync_controller_impl.h',
-      'browser/bad_message.cc',
-      'browser/bad_message.h',
-      'browser/banners/app_banner_data_fetcher.cc',
-      'browser/banners/app_banner_data_fetcher.h',
-      'browser/banners/app_banner_debug_log.cc',
-      'browser/banners/app_banner_debug_log.h',
-      'browser/banners/app_banner_manager.cc',
-      'browser/banners/app_banner_manager.h',
-      'browser/banners/app_banner_metrics.cc',
-      'browser/banners/app_banner_metrics.h',
-      'browser/banners/app_banner_settings_helper.cc',
-      'browser/banners/app_banner_settings_helper.h',
-      'browser/bitmap_fetcher/bitmap_fetcher.cc',
-      'browser/bitmap_fetcher/bitmap_fetcher.h',
-      'browser/bitmap_fetcher/bitmap_fetcher_delegate.h',
-      'browser/bitmap_fetcher/bitmap_fetcher_service.cc',
-      'browser/bitmap_fetcher/bitmap_fetcher_service.h',
-      'browser/bitmap_fetcher/bitmap_fetcher_service_factory.cc',
-      'browser/bitmap_fetcher/bitmap_fetcher_service_factory.h',
-      'browser/browser_about_handler.cc',
-      'browser/browser_about_handler.h',
-      'browser/browser_shutdown.cc',
-      'browser/browser_shutdown.h',
-      'browser/browser_util_win.cc',
-      'browser/browser_util_win.h',
-      'browser/browsing_data/autofill_counter.cc',
-      'browser/browsing_data/autofill_counter.h',
-      'browser/browsing_data/browsing_data_appcache_helper.cc',
-      'browser/browsing_data/browsing_data_appcache_helper.h',
-      'browser/browsing_data/browsing_data_cache_storage_helper.cc',
-      'browser/browsing_data/browsing_data_cache_storage_helper.h',
-      'browser/browsing_data/browsing_data_channel_id_helper.cc',
-      'browser/browsing_data/browsing_data_channel_id_helper.h',
-      'browser/browsing_data/browsing_data_cookie_helper.cc',
-      'browser/browsing_data/browsing_data_cookie_helper.h',
-      'browser/browsing_data/browsing_data_counter.cc',
-      'browser/browsing_data/browsing_data_counter.h',
-      'browser/browsing_data/browsing_data_database_helper.cc',
-      'browser/browsing_data/browsing_data_database_helper.h',
-      'browser/browsing_data/browsing_data_file_system_helper.cc',
-      'browser/browsing_data/browsing_data_file_system_helper.h',
-      'browser/browsing_data/browsing_data_helper.cc',
-      'browser/browsing_data/browsing_data_helper.h',
-      'browser/browsing_data/browsing_data_indexed_db_helper.cc',
-      'browser/browsing_data/browsing_data_indexed_db_helper.h',
-      'browser/browsing_data/browsing_data_local_storage_helper.cc',
-      'browser/browsing_data/browsing_data_local_storage_helper.h',
-      'browser/browsing_data/browsing_data_quota_helper.cc',
-      'browser/browsing_data/browsing_data_quota_helper.h',
-      'browser/browsing_data/browsing_data_quota_helper_impl.cc',
-      'browser/browsing_data/browsing_data_quota_helper_impl.h',
-      'browser/browsing_data/browsing_data_remover.cc',
-      'browser/browsing_data/browsing_data_remover.h',
-      'browser/browsing_data/browsing_data_service_worker_helper.cc',
-      'browser/browsing_data/browsing_data_service_worker_helper.h',
-      'browser/browsing_data/cache_counter.cc',
-      'browser/browsing_data/cache_counter.h',
-      'browser/browsing_data/canonical_cookie_hash.cc',
-      'browser/browsing_data/canonical_cookie_hash.h',
-      'browser/browsing_data/cookies_tree_model.cc',
-      'browser/browsing_data/cookies_tree_model.h',
-      'browser/browsing_data/history_counter.cc',
-      'browser/browsing_data/history_counter.h',
-      'browser/browsing_data/local_data_container.cc',
-      'browser/browsing_data/local_data_container.h',
-      'browser/browsing_data/passwords_counter.cc',
-      'browser/browsing_data/passwords_counter.h',
-      'browser/character_encoding.cc',
-      'browser/character_encoding.h',
-      'browser/chrome_browser_application_mac.h',
-      'browser/chrome_browser_application_mac.mm',
-      'browser/chrome_browser_field_trials.cc',
-      'browser/chrome_browser_field_trials.h',
-      'browser/chrome_browser_main.cc',
-      'browser/chrome_browser_main.h',
-      'browser/chrome_browser_main_android.cc',
-      'browser/chrome_browser_main_android.h',
-      'browser/chrome_browser_main_extra_parts.h',
-      'browser/chrome_browser_main_linux.cc',
-      'browser/chrome_browser_main_linux.h',
-      'browser/chrome_browser_main_mac.h',
-      'browser/chrome_browser_main_mac.mm',
-      'browser/chrome_browser_main_win.cc',
-      'browser/chrome_browser_main_win.h',
-      'browser/chrome_child_process_watcher.cc',
-      'browser/chrome_child_process_watcher.h',
-      'browser/chrome_content_browser_client.cc',
-      'browser/chrome_content_browser_client.h',
-      'browser/chrome_content_browser_client_parts.h',
-      'browser/chrome_device_client.cc',
-      'browser/chrome_device_client.h',
-      'browser/chrome_elf_init_win.cc',
-      'browser/chrome_elf_init_win.h',
-      'browser/chrome_net_benchmarking_message_filter.cc',
-      'browser/chrome_net_benchmarking_message_filter.h',
-      'browser/chrome_notification_types.h',
-      'browser/chrome_quota_permission_context.cc',
-      'browser/chrome_quota_permission_context.h',
-      'browser/chrome_select_file_dialog_factory_win.cc',
-      'browser/chrome_select_file_dialog_factory_win.h',
-      'browser/command_observer.h',
-      'browser/command_updater.cc',
-      'browser/command_updater.h',
-      'browser/command_updater_delegate.h',
-      'browser/component_updater/caps_installer_win.cc',
-      'browser/component_updater/caps_installer_win.h',
-      'browser/component_updater/chrome_component_updater_configurator.cc',
-      'browser/component_updater/chrome_component_updater_configurator.h',
-      'browser/component_updater/cld_component_installer.cc',
-      'browser/component_updater/cld_component_installer.h',
-      'browser/component_updater/component_patcher_operation_out_of_process.cc',
-      'browser/component_updater/component_patcher_operation_out_of_process.h',
-      'browser/component_updater/component_updater_resource_throttle.cc',
-      'browser/component_updater/component_updater_resource_throttle.h',
-      'browser/component_updater/ev_whitelist_component_installer.cc',
-      'browser/component_updater/ev_whitelist_component_installer.h',
-      'browser/component_updater/pnacl_component_installer.cc',
-      'browser/component_updater/pnacl_component_installer.h',
-      'browser/component_updater/recovery_component_installer.cc',
-      'browser/component_updater/recovery_component_installer.h',
-      'browser/component_updater/supervised_user_whitelist_installer.cc',
-      'browser/component_updater/supervised_user_whitelist_installer.h',
-      'browser/component_updater/sw_reporter_installer_win.cc',
-      'browser/component_updater/sw_reporter_installer_win.h',
-      'browser/component_updater/swiftshader_component_installer.cc',
-      'browser/component_updater/swiftshader_component_installer.h',
-      'browser/crash_upload_list.cc',
-      'browser/crash_upload_list.h',
-      'browser/custom_handlers/protocol_handler_registry.cc',
-      'browser/custom_handlers/protocol_handler_registry.h',
-      'browser/custom_handlers/protocol_handler_registry_factory.cc',
-      'browser/custom_handlers/protocol_handler_registry_factory.h',
-      'browser/defaults.cc',
-      'browser/defaults.h',
-      'browser/dom_distiller/dom_distiller_service_factory.cc',
-      'browser/dom_distiller/dom_distiller_service_factory.h',
       'browser/dom_distiller/dom_distiller_service_factory_android.cc',
       'browser/dom_distiller/dom_distiller_service_factory_android.h',
-      'browser/dom_distiller/lazy_dom_distiller_service.cc',
-      'browser/dom_distiller/lazy_dom_distiller_service.h',
-      'browser/dom_distiller/profile_utils.cc',
-      'browser/dom_distiller/profile_utils.h',
-      'browser/dom_distiller/tab_utils.cc',
-      'browser/dom_distiller/tab_utils.h',
       'browser/dom_distiller/tab_utils_android.cc',
       'browser/dom_distiller/tab_utils_android.h',
-      'browser/domain_reliability/service_factory.cc',
-      'browser/domain_reliability/service_factory.h',
-      'browser/download/all_download_item_notifier.cc',
-      'browser/download/all_download_item_notifier.h',
-      'browser/download/chrome_download_manager_delegate.cc',
-      'browser/download/chrome_download_manager_delegate.h',
-      'browser/download/download_crx_util_android.cc',
-      'browser/download/download_extensions.cc',
-      'browser/download/download_extensions.h',
-      'browser/download/download_file_picker.cc',
-      'browser/download/download_file_picker.h',
-      'browser/download/download_history.cc',
-      'browser/download/download_history.h',
-      'browser/download/download_item_model.cc',
-      'browser/download/download_item_model.h',
-      'browser/download/download_path_reservation_tracker.cc',
-      'browser/download/download_path_reservation_tracker.h',
-      'browser/download/download_prefs.cc',
-      'browser/download/download_prefs.h',
-      'browser/download/download_query.cc',
-      'browser/download/download_query.h',
-      'browser/download/download_request_limiter.cc',
-      'browser/download/download_request_limiter.h',
-      'browser/download/download_resource_throttle.cc',
-      'browser/download/download_resource_throttle.h',
-      'browser/download/download_service.cc',
-      'browser/download/download_service.h',
-      'browser/download/download_service_factory.cc',
-      'browser/download/download_service_factory.h',
-      'browser/download/download_service_impl.cc',
-      'browser/download/download_service_impl.h',
-      'browser/download/download_started_animation.h',
-      'browser/download/download_stats.cc',
-      'browser/download/download_stats.h',
-      'browser/download/download_status_updater.cc',
-      'browser/download/download_status_updater.h',
-      'browser/download/download_status_updater_mac.mm',
-      'browser/download/download_status_updater_win.cc',
-      'browser/download/download_target_determiner.cc',
-      'browser/download/download_target_determiner.h',
-      'browser/download/download_target_determiner_delegate.h',
-      'browser/download/download_target_info.h',
-      'browser/download/download_ui_controller.cc',
-      'browser/download/download_ui_controller.h',
-      'browser/download/drag_download_item.h',
-      'browser/download/save_package_file_picker.cc',
-      'browser/download/save_package_file_picker.h',
-      'browser/enumerate_modules_model_win.cc',
-      'browser/enumerate_modules_model_win.h',
-      # Oh hey, all the cool browser/extensions files are hanging out in
-      # chrome/chrome_browser_extensions.gypi.
-      'browser/external_protocol/external_protocol_handler.cc',
-      'browser/external_protocol/external_protocol_handler.h',
-      'browser/external_protocol/external_protocol_observer.cc',
-      'browser/external_protocol/external_protocol_observer.h',
-      'browser/file_select_helper.cc',
-      'browser/file_select_helper.h',
-      'browser/file_select_helper_mac.mm',
-      'browser/fullscreen.h',
-      'browser/fullscreen_chromeos.cc',
-      'browser/fullscreen_mac.mm',
-      'browser/fullscreen_win.cc',
-      'browser/geolocation/chrome_access_token_store.cc',
-      'browser/geolocation/chrome_access_token_store.h',
-      'browser/geolocation/geolocation_permission_context.cc',
-      'browser/geolocation/geolocation_permission_context.h',
-      'browser/geolocation/geolocation_permission_context_android.cc',
-      'browser/geolocation/geolocation_permission_context_android.h',
-      'browser/geolocation/geolocation_permission_context_extensions.cc',
-      'browser/geolocation/geolocation_permission_context_extensions.h',
-      'browser/geolocation/geolocation_permission_context_factory.cc',
-      'browser/geolocation/geolocation_permission_context_factory.h',
-      'browser/geolocation/geolocation_prefs.cc',
-      'browser/geolocation/geolocation_prefs.h',
-      'browser/global_keyboard_shortcuts_mac.h',
-      'browser/global_keyboard_shortcuts_mac.mm',
-      'browser/gpu/gl_string_manager.cc',
-      'browser/gpu/gl_string_manager.h',
-      'browser/gpu/gpu_feature_checker.cc',
-      'browser/gpu/gpu_feature_checker.h',
-      'browser/gpu/gpu_mode_manager.cc',
-      'browser/gpu/gpu_mode_manager.h',
-      'browser/gpu/three_d_api_observer.cc',
-      'browser/gpu/three_d_api_observer.h',
-      'browser/icon_loader.cc',
-      'browser/icon_loader.h',
-      'browser/icon_loader_android.cc',
-      'browser/icon_loader_chromeos.cc',
-      'browser/icon_loader_mac.mm',
-      'browser/icon_loader_win.cc',
-      'browser/icon_manager.cc',
-      'browser/icon_manager.h',
-      'browser/image_decoder.cc',
-      'browser/image_decoder.h',
-      'browser/image_holder.cc',
-      'browser/image_holder.h',
-      'browser/infobars/infobar_responder.cc',
-      'browser/infobars/infobar_responder.h',
-      'browser/infobars/infobar_service.cc',
-      'browser/infobars/infobar_service.h',
-      'browser/infobars/insecure_content_infobar_delegate.cc',
-      'browser/infobars/insecure_content_infobar_delegate.h',
-      'browser/install_verification/win/imported_module_verification.cc',
-      'browser/install_verification/win/imported_module_verification.h',
-      'browser/install_verification/win/install_verification.cc',
-      'browser/install_verification/win/install_verification.h',
-      'browser/install_verification/win/loaded_module_verification.cc',
-      'browser/install_verification/win/loaded_module_verification.h',
-      'browser/install_verification/win/loaded_modules_snapshot.cc',
-      'browser/install_verification/win/loaded_modules_snapshot.h',
-      'browser/install_verification/win/module_ids.cc',
-      'browser/install_verification/win/module_ids.h',
-      'browser/install_verification/win/module_info.h',
-      'browser/install_verification/win/module_list.cc',
-      'browser/install_verification/win/module_list.h',
-      'browser/install_verification/win/module_verification_common.cc',
-      'browser/install_verification/win/module_verification_common.h',
+      'browser/download/download_request_infobar_delegate_android.cc',
+      'browser/download/download_request_infobar_delegate_android.h',
+      'browser/geolocation/geolocation_infobar_delegate_android.cc',
+      'browser/geolocation/geolocation_infobar_delegate_android.h',
       'browser/interests/android/interests_service.cc',
       'browser/interests/android/interests_service.h',
-      'browser/interests/interests_fetcher.cc',
-      'browser/interests/interests_fetcher.h',
-      'browser/internal_auth.cc',
-      'browser/internal_auth.h',
-      'browser/interstitials/chrome_controller_client.cc',
-      'browser/interstitials/chrome_controller_client.h',
-      'browser/interstitials/chrome_metrics_helper.cc',
-      'browser/interstitials/chrome_metrics_helper.h',
-      'browser/interstitials/security_interstitial_page.cc',
-      'browser/interstitials/security_interstitial_page.h',
-      'browser/intranet_redirect_detector.cc',
-      'browser/intranet_redirect_detector.h',
       'browser/invalidation/invalidation_service_factory_android.cc',
       'browser/invalidation/invalidation_service_factory_android.h',
-      'browser/invalidation/profile_invalidation_provider_factory.cc',
-      'browser/invalidation/profile_invalidation_provider_factory.h',
-      'browser/io_thread.cc',
-      'browser/io_thread.h',
-      'browser/jumplist_updater_win.cc',
-      'browser/jumplist_updater_win.h',
-      'browser/jumplist_win.cc',
-      'browser/jumplist_win.h',
-      'browser/lifetime/application_lifetime.cc',
-      'browser/lifetime/application_lifetime.h',
       'browser/lifetime/application_lifetime_android.cc',
       'browser/lifetime/application_lifetime_android.h',
-      'browser/lifetime/application_lifetime_mac.mm',
-      'browser/lifetime/application_lifetime_win.cc',
-      'browser/mac/bluetooth_utility.h',
-      'browser/mac/bluetooth_utility.mm',
-      'browser/mac/dock.h',
-      'browser/mac/dock.mm',
-      'browser/mac/install_from_dmg.h',
-      'browser/mac/install_from_dmg.mm',
-      'browser/mac/keystone_glue.h',
-      'browser/mac/keystone_glue.mm',
-      'browser/mac/keystone_registration.h',
-      'browser/mac/keystone_registration.mm',
-      'browser/mac/mac_startup_profiler.cc',
-      'browser/mac/mac_startup_profiler.h',
-      'browser/mac/master_prefs.h',
-      'browser/mac/master_prefs.mm',
-      'browser/mac/relauncher.cc',
-      'browser/mac/relauncher.h',
-      'browser/mac/security_wrappers.cc',
-      'browser/mac/security_wrappers.h',
-      'browser/manifest/manifest_icon_downloader.cc',
-      'browser/manifest/manifest_icon_downloader.h',
-      'browser/manifest/manifest_icon_selector.cc',
-      'browser/manifest/manifest_icon_selector.h',
       'browser/media/android/cdm/media_drm_credential_manager.cc',
       'browser/media/android/cdm/media_drm_credential_manager.h',
       'browser/media/android/remote/record_cast_action.cc',
@@ -625,293 +902,18 @@
       'browser/media/android/router/media_router_android.h',
       'browser/media/android/router/media_router_dialog_controller_android.cc',
       'browser/media/android/router/media_router_dialog_controller_android.h',
-      'browser/media/desktop_media_list.h',
-      'browser/media/desktop_media_picker.h',
-      'browser/media/desktop_streams_registry.cc',
-      'browser/media/desktop_streams_registry.h',
-      'browser/media/media_access_handler.h',
-      'browser/media/media_capture_devices_dispatcher.cc',
-      'browser/media/media_capture_devices_dispatcher.h',
-      'browser/media/media_device_id_salt.cc',
-      'browser/media/media_device_id_salt.h',
-      'browser/media/media_permission.cc',
-      'browser/media/media_permission.h',
-      'browser/media/media_stream_camera_permission_context_factory.cc',
-      'browser/media/media_stream_camera_permission_context_factory.h',
-      'browser/media/media_stream_capture_indicator.cc',
-      'browser/media/media_stream_capture_indicator.h',
-      'browser/media/media_stream_device_permission_context.cc',
-      'browser/media/media_stream_device_permission_context.h',
-      'browser/media/media_stream_device_permissions.cc',
-      'browser/media/media_stream_device_permissions.h',
-      'browser/media/media_stream_devices_controller.cc',
-      'browser/media/media_stream_devices_controller.h',
-      'browser/media/media_stream_mic_permission_context_factory.cc',
-      'browser/media/media_stream_mic_permission_context_factory.h',
-      'browser/media/media_url_constants.cc',
-      'browser/media/media_url_constants.h',
-      'browser/media/midi_permission_context.cc',
-      'browser/media/midi_permission_context.h',
-      'browser/media/midi_permission_context_factory.cc',
-      'browser/media/midi_permission_context_factory.h',
-      'browser/media/native_desktop_media_list.cc',
-      'browser/media/native_desktop_media_list.h',
-      'browser/media/permission_bubble_media_access_handler.cc',
-      'browser/media/permission_bubble_media_access_handler.h',
-      'browser/media/router/media_router_feature.cc',
-      'browser/media/router/media_router_feature.h',
-      # TODO(brettw) should this go with the webrtc sources?
-      'browser/media/webrtc_log_list.cc',
-      'browser/media/webrtc_log_list.h',
-      'browser/memory_details.cc',
-      'browser/memory_details.h',
-      'browser/memory_details_android.cc',
-      'browser/memory_details_linux.cc',
-      'browser/memory_details_mac.cc',
-      'browser/memory_details_win.cc',
-      'browser/mod_pagespeed/mod_pagespeed_metrics.cc',
-      'browser/mod_pagespeed/mod_pagespeed_metrics.h',
-      'browser/native_window_notification_source.h',
-      'browser/net/predictor_tab_helper.cc',
-      'browser/net/predictor_tab_helper.h',
-      'browser/ntp_snippets/ntp_snippets_service_factory.cc',
-      'browser/ntp_snippets/ntp_snippets_service_factory.h',
-      'browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc',
-      'browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.h',
-      'browser/page_load_metrics/observers/google_captcha_observer.cc',
-      'browser/page_load_metrics/observers/google_captcha_observer.h',
-      'browser/page_load_metrics/observers/stale_while_revalidate_metrics_observer.cc',
-      'browser/page_load_metrics/observers/stale_while_revalidate_metrics_observer.h',
-      'browser/page_load_metrics/page_load_metrics_initialize.cc',
-      'browser/page_load_metrics/page_load_metrics_initialize.h',
-      'browser/performance_monitor/performance_monitor.cc',
-      'browser/performance_monitor/performance_monitor.h',
-      'browser/performance_monitor/process_metrics_history.cc',
-      'browser/performance_monitor/process_metrics_history.h',
-      'browser/platform_util.h',
-      'browser/platform_util_android.cc',
-      'browser/platform_util_chromeos.cc',
-      'browser/platform_util_internal.h',
-      'browser/platform_util_mac.mm',
-      'browser/platform_util_win.cc',
-      'browser/prefetch/prefetch.cc',
-      'browser/prefetch/prefetch.h',
-      'browser/prefetch/prefetch_field_trial.cc',
-      'browser/prefetch/prefetch_field_trial.h',
-      'browser/prerender/external_prerender_handler_android.cc',
-      'browser/prerender/external_prerender_handler_android.h',
-      'browser/prerender/prerender_config.cc',
-      'browser/prerender/prerender_config.h',
-      'browser/prerender/prerender_contents.cc',
-      'browser/prerender/prerender_contents.h',
-      'browser/prerender/prerender_field_trial.cc',
-      'browser/prerender/prerender_field_trial.h',
-      'browser/prerender/prerender_final_status.cc',
-      'browser/prerender/prerender_final_status.h',
-      'browser/prerender/prerender_handle.cc',
-      'browser/prerender/prerender_handle.h',
-      'browser/prerender/prerender_histograms.cc',
-      'browser/prerender/prerender_histograms.h',
-      'browser/prerender/prerender_history.cc',
-      'browser/prerender/prerender_history.h',
-      'browser/prerender/prerender_link_manager.cc',
-      'browser/prerender/prerender_link_manager.h',
-      'browser/prerender/prerender_link_manager_factory.cc',
-      'browser/prerender/prerender_link_manager_factory.h',
-      'browser/prerender/prerender_manager.cc',
-      'browser/prerender/prerender_manager.h',
-      'browser/prerender/prerender_manager_factory.cc',
-      'browser/prerender/prerender_manager_factory.h',
-      'browser/prerender/prerender_message_filter.cc',
-      'browser/prerender/prerender_message_filter.h',
-      'browser/prerender/prerender_origin.cc',
-      'browser/prerender/prerender_origin.h',
-      'browser/prerender/prerender_resource_throttle.cc',
-      'browser/prerender/prerender_resource_throttle.h',
-      'browser/prerender/prerender_tab_helper.cc',
-      'browser/prerender/prerender_tab_helper.h',
-      'browser/prerender/prerender_util.cc',
-      'browser/prerender/prerender_util.h',
-      'browser/private_working_set_snapshot.h',
-      'browser/private_working_set_snapshot_win.cc',
-      'browser/process_info_snapshot.h',
-      'browser/process_info_snapshot_mac.cc',
-      'browser/process_resource_usage.cc',
-      'browser/process_resource_usage.h',
-      'browser/process_singleton.h',
-      'browser/process_singleton_win.cc',
-      'browser/push_messaging/push_messaging_app_identifier.cc',
-      'browser/push_messaging/push_messaging_app_identifier.h',
-      'browser/push_messaging/push_messaging_constants.cc',
-      'browser/push_messaging/push_messaging_constants.h',
-      'browser/push_messaging/push_messaging_permission_context.cc',
-      'browser/push_messaging/push_messaging_permission_context.h',
-      'browser/push_messaging/push_messaging_permission_context_factory.cc',
-      'browser/push_messaging/push_messaging_permission_context_factory.h',
-      'browser/push_messaging/push_messaging_service_factory.cc',
-      'browser/push_messaging/push_messaging_service_factory.h',
-      'browser/push_messaging/push_messaging_service_impl.cc',
-      'browser/push_messaging/push_messaging_service_impl.h',
-      'browser/renderer_context_menu/context_menu_content_type_factory.cc',
-      'browser/renderer_context_menu/context_menu_content_type_factory.h',
-      'browser/renderer_context_menu/context_menu_content_type_panel.cc',
-      'browser/renderer_context_menu/context_menu_content_type_panel.h',
-      'browser/renderer_host/chrome_render_message_filter.cc',
-      'browser/renderer_host/chrome_render_message_filter.h',
-      'browser/renderer_host/chrome_render_widget_host_view_mac_delegate.h',
-      'browser/renderer_host/chrome_render_widget_host_view_mac_delegate.mm',
-      'browser/renderer_host/chrome_render_widget_host_view_mac_history_swiper.h',
-      'browser/renderer_host/chrome_render_widget_host_view_mac_history_swiper.mm',
-      'browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc',
-      'browser/renderer_host/chrome_resource_dispatcher_host_delegate.h',
-      'browser/renderer_host/thread_hop_resource_throttle.cc',
-      'browser/renderer_host/thread_hop_resource_throttle.h',
-      'browser/renderer_preferences_util.cc',
-      'browser/renderer_preferences_util.h',
-      'browser/resources_util.cc',
-      'browser/resources_util.h',
-      'browser/safe_browsing/safe_browsing_tab_observer.cc',
-      'browser/safe_browsing/safe_browsing_tab_observer.h',
-      'browser/safe_browsing/srt_fetcher_win.cc',
-      'browser/safe_browsing/srt_fetcher_win.h',
-      'browser/safe_browsing/srt_field_trial_win.cc',
-      'browser/safe_browsing/srt_field_trial_win.h',
-      'browser/safe_browsing/srt_global_error_win.cc',
-      'browser/safe_browsing/srt_global_error_win.h',
-      'browser/search/contextual_search_policy_handler_android.cc',
-      'browser/search/contextual_search_policy_handler_android.h',
-      'browser/search/iframe_source.cc',
-      'browser/search/iframe_source.h',
-      'browser/search/instant_io_context.cc',
-      'browser/search/instant_io_context.h',
-      'browser/search/instant_service.cc',
-      'browser/search/instant_service.h',
-      'browser/search/instant_service_factory.cc',
-      'browser/search/instant_service_factory.h',
-      'browser/search/instant_service_observer.cc',
-      'browser/search/instant_service_observer.h',
-      'browser/search/most_visited_iframe_source.cc',
-      'browser/search/most_visited_iframe_source.h',
-      'browser/search/search.cc',
-      'browser/search/search.h',
-      'browser/search/suggestions/image_fetcher_impl.cc',
-      'browser/search/suggestions/image_fetcher_impl.h',
-      'browser/search/suggestions/suggestions_service_factory.cc',
-      'browser/search/suggestions/suggestions_service_factory.h',
-      'browser/search/suggestions/suggestions_source.cc',
-      'browser/search/suggestions/suggestions_source.h',
-      'browser/search/thumbnail_source.cc',
-      'browser/search/thumbnail_source.h',
-      'browser/shell_integration.cc',
-      'browser/shell_integration.h',
-      'browser/shell_integration_android.cc',
-      'browser/shell_integration_chromeos.cc',
-      'browser/shell_integration_mac.mm',
-      'browser/shell_integration_win.cc',
-      'browser/site_details.cc',
-      'browser/site_details.h',
-      'browser/speech/chrome_speech_recognition_manager_delegate.cc',
-      'browser/speech/chrome_speech_recognition_manager_delegate.h',
-      'browser/speech/tts_android.cc',
-      'browser/speech/tts_android.h',
-      'browser/speech/tts_chromeos.cc',
-      'browser/speech/tts_controller.h',
-      'browser/speech/tts_controller_impl.cc',
-      'browser/speech/tts_controller_impl.h',
-      'browser/speech/tts_mac.mm',
-      'browser/speech/tts_message_filter.cc',
-      'browser/speech/tts_message_filter.h',
-      'browser/speech/tts_platform.cc',
-      'browser/speech/tts_platform.h',
-      'browser/speech/tts_win.cc',
-      'browser/stack_sampling_configuration.cc',
-      'browser/stack_sampling_configuration.h',
-      'browser/status_icons/status_icon.cc',
-      'browser/status_icons/status_icon.h',
-      'browser/status_icons/status_icon_menu_model.cc',
-      'browser/status_icons/status_icon_menu_model.h',
-      'browser/status_icons/status_icon_observer.h',
-      'browser/status_icons/status_tray.cc',
-      'browser/status_icons/status_tray.h',
-      'browser/storage/durable_storage_permission_context.cc',
-      'browser/storage/durable_storage_permission_context.h',
-      'browser/storage/durable_storage_permission_context_factory.cc',
-      'browser/storage/durable_storage_permission_context_factory.h',
-      'browser/tab_contents/navigation_metrics_recorder.cc',
-      'browser/tab_contents/navigation_metrics_recorder.h',
-      'browser/tab_contents/retargeting_details.h',
-      'browser/tab_contents/tab_util.cc',
-      'browser/tab_contents/tab_util.h',
-      'browser/task_management/web_contents_tags.cc',
-      'browser/task_management/web_contents_tags.h',
-      'browser/task_profiler/task_profiler_data_serializer.cc',
-      'browser/task_profiler/task_profiler_data_serializer.h',
-      'browser/thumbnails/content_analysis.cc',
-      'browser/thumbnails/content_analysis.h',
-      'browser/thumbnails/content_based_thumbnailing_algorithm.cc',
-      'browser/thumbnails/content_based_thumbnailing_algorithm.h',
-      'browser/thumbnails/simple_thumbnail_crop.cc',
-      'browser/thumbnails/simple_thumbnail_crop.h',
-      'browser/thumbnails/thumbnail_list_source.cc',
-      'browser/thumbnails/thumbnail_list_source.h',
-      'browser/thumbnails/thumbnail_service.h',
-      'browser/thumbnails/thumbnail_service_factory.cc',
-      'browser/thumbnails/thumbnail_service_factory.h',
-      'browser/thumbnails/thumbnail_service_impl.cc',
-      'browser/thumbnails/thumbnail_service_impl.h',
-      'browser/thumbnails/thumbnail_tab_helper.cc',
-      'browser/thumbnails/thumbnail_tab_helper.h',
-      'browser/thumbnails/thumbnailing_algorithm.h',
-      'browser/thumbnails/thumbnailing_context.cc',
-      'browser/thumbnails/thumbnailing_context.h',
-      'browser/tracing/background_tracing_field_trial.cc',
-      'browser/tracing/background_tracing_field_trial.h',
-      'browser/tracing/crash_service_uploader.cc',
-      'browser/tracing/crash_service_uploader.h',
-      'browser/tracing/navigation_tracing.cc',
-      'browser/tracing/navigation_tracing.h',
-      'browser/translate/chrome_translate_client.cc',
-      'browser/translate/chrome_translate_client.h',
-      'browser/translate/translate_accept_languages_factory.cc',
-      'browser/translate/translate_accept_languages_factory.h',
-      'browser/translate/translate_service.cc',
-      'browser/translate/translate_service.h',
-      'browser/update_client/chrome_update_query_params_delegate.cc',
-      'browser/update_client/chrome_update_query_params_delegate.h',
-      'browser/usb/usb_chooser_context.cc',
-      'browser/usb/usb_chooser_context.h',
-      'browser/usb/usb_chooser_context_factory.cc',
-      'browser/usb/usb_chooser_context_factory.h',
-      'browser/usb/usb_tab_helper.cc',
-      'browser/usb/usb_tab_helper.h',
-      'browser/usb/web_usb_permission_provider.cc',
-      'browser/usb/web_usb_permission_provider.h',
-      'browser/web_data_service_factory.cc',
-      'browser/web_data_service_factory.h',
-    ],
-    'chrome_browser_android_sources': [
-      'browser/android/background_sync_launcher_android.cc',
-      'browser/android/background_sync_launcher_android.h',
-      'browser/android/data_usage/data_use_tab_ui_manager_android.cc',
-      'browser/android/data_usage/data_use_tab_ui_manager_android.h',
-      'browser/download/download_request_infobar_delegate_android.cc',
-      'browser/download/download_request_infobar_delegate_android.h',
-      'browser/geolocation/geolocation_infobar_delegate_android.cc',
-      'browser/geolocation/geolocation_infobar_delegate_android.h',
       'browser/media/media_stream_infobar_delegate_android.cc',
       'browser/media/media_stream_infobar_delegate_android.h',
       'browser/media/midi_permission_infobar_delegate_android.cc',
       'browser/media/midi_permission_infobar_delegate_android.h',
       'browser/media/protected_media_identifier_infobar_delegate_android.cc',
       'browser/media/protected_media_identifier_infobar_delegate_android.h',
-      'browser/media/protected_media_identifier_permission_context.cc',
-      'browser/media/protected_media_identifier_permission_context.h',
-      'browser/media/protected_media_identifier_permission_context_factory.cc',
-      'browser/media/protected_media_identifier_permission_context_factory.h',
       'browser/metrics/android_metrics_provider.cc',
       'browser/metrics/android_metrics_provider.h',
       'browser/net/spdyproxy/data_reduction_proxy_infobar_delegate_android.cc',
       'browser/net/spdyproxy/data_reduction_proxy_infobar_delegate_android.h',
+      'browser/net/spdyproxy/data_reduction_proxy_settings_android.cc',
+      'browser/net/spdyproxy/data_reduction_proxy_settings_android.h',
       'browser/password_manager/account_chooser_dialog_android.cc',
       'browser/password_manager/account_chooser_dialog_android.h',
       'browser/password_manager/auto_signin_first_run_infobar_delegate.cc',
@@ -924,6 +926,12 @@
       'browser/permissions/permission_queue_controller.h',
       'browser/precache/precache_manager_factory.cc',
       'browser/precache/precache_manager_factory.h',
+      'browser/prerender/external_prerender_handler_android.cc',
+      'browser/prerender/external_prerender_handler_android.h',
+      'browser/profiles/profile_android.cc',
+      'browser/profiles/profile_android.h',
+      'browser/search/contextual_search_policy_handler_android.cc',
+      'browser/search/contextual_search_policy_handler_android.h',
       'browser/signin/oauth2_token_service_delegate_android.cc',
       'browser/signin/oauth2_token_service_delegate_android.h',
       'browser/ssl/ssl_add_certificate_android.cc',
@@ -1730,14 +1738,6 @@
       'browser/google/google_url_tracker_factory.h',
     ],
     'chrome_browser_history_sources': [
-      'browser/history/android/android_history_provider_service.cc',
-      'browser/history/android/android_history_provider_service.h',
-      'browser/history/android/android_provider_backend.cc',
-      'browser/history/android/android_provider_backend.h',
-      'browser/history/android/bookmark_model_sql_handler.cc',
-      'browser/history/android/bookmark_model_sql_handler.h',
-      'browser/history/android/sqlite_cursor.cc',
-      'browser/history/android/sqlite_cursor.h',
       'browser/history/chrome_history_backend_client.cc',
       'browser/history/chrome_history_backend_client.h',
       'browser/history/chrome_history_client.cc',
@@ -1753,6 +1753,17 @@
       'browser/history/web_history_service_factory.cc',
       'browser/history/web_history_service_factory.h',
     ],
+    # History sources used when android_java_ui is enabled.
+    'chrome_browser_history_android_java_ui_sources': [
+      'browser/history/android/android_history_provider_service.cc',
+      'browser/history/android/android_history_provider_service.h',
+      'browser/history/android/android_provider_backend.cc',
+      'browser/history/android/android_provider_backend.h',
+      'browser/history/android/bookmark_model_sql_handler.cc',
+      'browser/history/android/bookmark_model_sql_handler.h',
+      'browser/history/android/sqlite_cursor.cc',
+      'browser/history/android/sqlite_cursor.h',
+    ],
     'chrome_browser_jni_sources': [
       'android/java/src/org/chromium/chrome/browser/AfterStartupTaskUtils.java',
       'android/java/src/org/chromium/chrome/browser/ApplicationLifetime.java',
@@ -2006,8 +2017,6 @@
       'browser/net/spdyproxy/data_reduction_proxy_chrome_settings.h',
       'browser/net/spdyproxy/data_reduction_proxy_chrome_settings_factory.cc',
       'browser/net/spdyproxy/data_reduction_proxy_chrome_settings_factory.h',
-      'browser/net/spdyproxy/data_reduction_proxy_settings_android.cc',
-      'browser/net/spdyproxy/data_reduction_proxy_settings_android.h',
       'browser/net/timed_cache.cc',
       'browser/net/timed_cache.h',
       'browser/net/url_info.cc',
@@ -2029,8 +2038,6 @@
       'browser/notifications/notification_permission_context_factory.cc',
       'browser/notifications/notification_permission_context_factory.h',
       'browser/notifications/notification_ui_manager.h',
-      'browser/notifications/notification_ui_manager_android.cc',
-      'browser/notifications/notification_ui_manager_android.h',
       'browser/notifications/notifier_state_tracker.cc',
       'browser/notifications/notifier_state_tracker.h',
       'browser/notifications/notifier_state_tracker_factory.cc',
@@ -2044,8 +2051,10 @@
       'browser/push_messaging/push_messaging_notification_manager.cc',
       'browser/push_messaging/push_messaging_notification_manager.h',
     ],
-    # Used on Android when notifications are enabled.
-    'chrome_browser_notifications_android_sources': [
+    # Used on Android when notifications and java_ui are enabled.
+    'chrome_browser_notifications_android_java_ui_sources': [
+      'browser/notifications/notification_ui_manager_android.cc',
+      'browser/notifications/notification_ui_manager_android.h',
       'browser/notifications/notification_permission_infobar_delegate.cc',
       'browser/notifications/notification_permission_infobar_delegate.h',
     ],
@@ -2126,11 +2135,14 @@
       'browser/permissions/permission_request_id.h',
       'browser/permissions/permission_uma_util.cc',
       'browser/permissions/permission_uma_util.h',
-      'browser/permissions/permission_update_infobar_delegate_android.cc',
-      'browser/permissions/permission_update_infobar_delegate_android.h',
       'browser/permissions/permission_util.cc',
       'browser/permissions/permission_util.h',
     ],
+    # Permissions sources used when android_java_ui is enabled.
+    'chrome_browser_permissions_android_java_ui_sources': [
+      'browser/permissions/permission_update_infobar_delegate_android.cc',
+      'browser/permissions/permission_update_infobar_delegate_android.h',
+    ],
     # See also the plugin_installation_sources list below.
     'chrome_browser_plugins_sources': [
       'browser/browsing_data/browsing_data_flash_lso_helper.cc',
@@ -2407,8 +2419,6 @@
       'browser/profiles/off_the_record_profile_io_data.h',
       'browser/profiles/profile.cc',
       'browser/profiles/profile.h',
-      'browser/profiles/profile_android.cc',
-      'browser/profiles/profile_android.h',
       'browser/profiles/profile_attributes_entry.cc',
       'browser/profiles/profile_attributes_entry.h',
       'browser/profiles/profile_attributes_storage.h',
@@ -2606,8 +2616,6 @@
       'browser/search_engines/search_provider_install_state_message_filter.h',
       'browser/search_engines/template_url_fetcher_factory.cc',
       'browser/search_engines/template_url_fetcher_factory.h',
-      'browser/search_engines/template_url_service_android.cc',
-      'browser/search_engines/template_url_service_android.h',
       'browser/search_engines/template_url_service_factory.cc',
       'browser/search_engines/template_url_service_factory.h',
       'browser/search_engines/ui_thread_search_terms_data.cc',
@@ -2615,6 +2623,11 @@
       'browser/search_engines/ui_thread_search_terms_data_android.cc',
       'browser/search_engines/ui_thread_search_terms_data_android.h',
     ],
+    # Search sources used when android_java_ui is enabled.
+    'chrome_browser_search_engines_android_java_ui_sources': [
+      'browser/search_engines/template_url_service_android.cc',
+      'browser/search_engines/template_url_service_android.h',
+    ],
     'chrome_browser_service_discovery_sources': [
       'browser/local_discovery/cloud_device_list.cc',
       'browser/local_discovery/cloud_device_list.h',
@@ -2792,8 +2805,6 @@
       'browser/ssl/common_name_mismatch_handler.h',
       'browser/ssl/security_state_model.cc',
       'browser/ssl/security_state_model.h',
-      'browser/ssl/security_state_model_android.cc',
-      'browser/ssl/security_state_model_android.h',
       'browser/ssl/security_state_model_client.h',
       'browser/ssl/ssl_blocking_page.cc',
       'browser/ssl/ssl_blocking_page.h',
@@ -2802,15 +2813,16 @@
       'browser/ssl/ssl_error_handler.cc',
       'browser/ssl/ssl_error_handler.h',
     ],
+    # SSL sources used when android_java_ui is enabled.
+    'chrome_browser_ssl_android_java_ui_sources': [
+      'browser/ssl/security_state_model_android.cc',
+      'browser/ssl/security_state_model_android.h',
+    ],
     'chrome_browser_supervised_user_sources': [
       'browser/content_settings/content_settings_supervised_provider.cc',
       'browser/content_settings/content_settings_supervised_provider.h',
-      'browser/supervised_user/child_accounts/child_account_feedback_reporter_android.cc',
-      'browser/supervised_user/child_accounts/child_account_feedback_reporter_android.h',
       'browser/supervised_user/child_accounts/child_account_service.cc',
       'browser/supervised_user/child_accounts/child_account_service.h',
-      'browser/supervised_user/child_accounts/child_account_service_android.cc',
-      'browser/supervised_user/child_accounts/child_account_service_android.h',
       'browser/supervised_user/child_accounts/child_account_service_factory.cc',
       'browser/supervised_user/child_accounts/child_account_service_factory.h',
       'browser/supervised_user/child_accounts/family_info_fetcher.cc',
@@ -2855,6 +2867,13 @@
       'browser/supervised_user/supervised_user_whitelist_service.h',
       'browser/supervised_user/supervised_users.h',
     ],
+    # Child accounts sources used with android_java_ui enabled.
+    'chrome_browser_supervised_user_android_java_ui_sources': [
+      'browser/supervised_user/child_accounts/child_account_feedback_reporter_android.cc',
+      'browser/supervised_user/child_accounts/child_account_feedback_reporter_android.h',
+      'browser/supervised_user/child_accounts/child_account_service_android.cc',
+      'browser/supervised_user/child_accounts/child_account_service_android.h',
+    ],
     # TODO(bauerb): This code should be removed (on desktop) once child account
     # support has launched (https://crbug.com/505443).
     'chrome_browser_supervised_user_legacy_sources': [
@@ -2897,14 +2916,6 @@
       'browser/sync/glue/extensions_activity_monitor.h',
       'browser/sync/glue/sync_start_util.cc',
       'browser/sync/glue/sync_start_util.h',
-      'browser/sync/glue/synced_tab_delegate_android.cc',
-      'browser/sync/glue/synced_tab_delegate_android.h',
-      'browser/sync/glue/synced_window_delegate_android.cc',
-      'browser/sync/glue/synced_window_delegate_android.h',
-      'browser/sync/glue/synced_window_delegates_getter_android.cc',
-      'browser/sync/glue/synced_window_delegates_getter_android.h',
-      'browser/sync/profile_sync_service_android.cc',
-      'browser/sync/profile_sync_service_android.h',
       'browser/sync/profile_sync_service_factory.cc',
       'browser/sync/profile_sync_service_factory.h',
       'browser/sync/sessions/notification_service_sessions_router.cc',
@@ -2914,6 +2925,17 @@
       'browser/sync/sync_startup_tracker.cc',
       'browser/sync/sync_startup_tracker.h',
     ],
+    # Sync sources used when android_java_ui is enabled.
+    'chrome_browser_sync_android_java_ui_sources': [
+      'browser/sync/glue/synced_tab_delegate_android.cc',
+      'browser/sync/glue/synced_tab_delegate_android.h',
+      'browser/sync/glue/synced_window_delegate_android.cc',
+      'browser/sync/glue/synced_window_delegate_android.h',
+      'browser/sync/profile_sync_service_android.cc',
+      'browser/sync/profile_sync_service_android.h',
+      'browser/sync/glue/synced_window_delegates_getter_android.cc',
+      'browser/sync/glue/synced_window_delegates_getter_android.h',
+    ],
     'chrome_browser_task_manager_sources': [
       # Stats collection for CAPS (uses old task manager):
       'browser/caps/generate_state_json.cc',
@@ -3606,13 +3628,13 @@
         ['notifications==1', {
           'sources': [ '<@(chrome_browser_notifications_sources)' ],
           'conditions': [
-            ['OS!="android"', {
+            ['android_java_ui==0', {
               'sources': [
                 '<@(chrome_browser_notifications_non_android_sources)',
               ],
             }, {
               'sources': [
-                '<@(chrome_browser_notifications_android_sources)',
+                '<@(chrome_browser_notifications_android_java_ui_sources)',
               ],
             }],
           ],
@@ -3665,21 +3687,9 @@
           'dependencies': [
             '../build/android/ndk.gyp:cpu_features',
             '../components/components.gyp:cdm_browser',
-            '../components/components.gyp:data_reduction_proxy_content',
-            '../components/components.gyp:data_usage_android',
-            '../components/components.gyp:enhanced_bookmarks',
-            '../components/components.gyp:offline_pages',
-            '../components/components.gyp:precache_content',
-            '../components/components.gyp:precache_core',
-            '../components/components.gyp:service_tab_launcher',
-            '../components/components.gyp:toolbar',
-            '../components/components.gyp:web_contents_delegate_android',
             '../components/components_resources.gyp:components_resources',
             '../third_party/android_opengl/etc1/etc1.gyp:etc1',
             '../third_party/libaddressinput/libaddressinput.gyp:libaddressinput_util',
-            'chrome_browser_jni_headers',
-            'client_discourse_context_proto',
-            'delta_file_proto',
           ],
           'dependencies!': [
             '../components/components.gyp:storage_monitor',
@@ -3688,10 +3698,35 @@
           ],
           'sources': [
             '<@(chrome_browser_android_sources)',
-            '<@(chrome_browser_bookmark_android_sources)',
            ],
-          'defines': [ 'ENABLE_DATA_REDUCTION_PROXY_DEBUGGING' ],
           'conditions': [
+            ['android_java_ui==1', {
+              'dependencies': [
+                '../components/components.gyp:data_reduction_proxy_content',
+                '../components/components.gyp:data_usage_android',
+                '../components/components.gyp:enhanced_bookmarks',
+                '../components/components.gyp:offline_pages',
+                '../components/components.gyp:precache_content',
+                '../components/components.gyp:precache_core',
+                '../components/components.gyp:service_tab_launcher',
+                '../components/components.gyp:toolbar',
+                '../components/components.gyp:web_contents_delegate_android',
+                'chrome_browser_jni_headers',
+                'client_discourse_context_proto',
+                'delta_file_proto',
+              ],
+              'sources': [
+                '<@(chrome_browser_android_java_ui_sources)',
+                '<@(chrome_browser_bookmark_android_sources)',
+                '<@(chrome_browser_sync_android_java_ui_sources)',
+                '<@(chrome_browser_supervised_user_android_java_ui_sources)',
+                '<@(chrome_browser_ssl_android_java_ui_sources)',
+                '<@(chrome_browser_search_engines_android_java_ui_sources)',
+                '<@(chrome_browser_permissions_android_java_ui_sources)',
+                '<@(chrome_browser_history_android_java_ui_sources)',
+               ],
+              'defines': [ 'ENABLE_DATA_REDUCTION_PROXY_DEBUGGING' ],
+            }],
             ['use_seccomp_bpf==1', {
               'defines': ['USE_SECCOMP_BPF'],
               'dependencies': [
@@ -3939,7 +3974,7 @@
     },
   ],
   'conditions': [
-    ['OS=="android"', {
+    ['android_java_ui == 1', {
       'targets': [
         {
           # GN: //chrome/browser:jni_headers
diff --git a/chrome/chrome_browser_ui.gypi b/chrome/chrome_browser_ui.gypi
index 9adbfebba..22a5fad 100644
--- a/chrome/chrome_browser_ui.gypi
+++ b/chrome/chrome_browser_ui.gypi
@@ -15,8 +15,6 @@
       'browser/ui/android/android_about_app_info.h',
       'browser/ui/android/external_protocol_dialog_android.cc',
       'browser/ui/android/status_tray_android.cc',
-      'browser/ui/android/tab_model/tab_model_list.cc',
-      'browser/ui/android/tab_model/tab_model_list.h',
       'browser/ui/app_list/app_list_util.cc',
       'browser/ui/app_list/app_list_util.h',
       # All other browser/ui/app_list files go in chrome_browser_ui_app_list_sources.
@@ -425,7 +423,7 @@
       'browser/ui/zoom/chrome_zoom_level_prefs.cc',
       'browser/ui/zoom/chrome_zoom_level_prefs.h',
     ],
-    'chrome_browser_ui_android_non_aura_sources': [
+    'chrome_browser_ui_android_java_ui_sources': [
       'browser/ui/android/autofill/autofill_dialog_controller_android.cc',
       'browser/ui/android/autofill/autofill_dialog_controller_android.h',
       'browser/ui/android/autofill/autofill_dialog_result.cc',
@@ -494,6 +492,10 @@
       'browser/ui/android/tab_model/tab_model.h',
       'browser/ui/android/tab_model/tab_model_jni_bridge.cc',
       'browser/ui/android/tab_model/tab_model_jni_bridge.h',
+      'browser/ui/android/tab_model/tab_model_list.cc',
+      'browser/ui/android/tab_model/tab_model_list.h',
+      'browser/ui/android/toolbar/toolbar_model_android.cc',
+      'browser/ui/android/toolbar/toolbar_model_android.h',
       'browser/ui/android/website_settings_popup_android.cc',
       'browser/ui/android/website_settings_popup_android.h',
       'browser/ui/android/window_android_helper.cc',
@@ -2785,8 +2787,6 @@
       'browser/ui/webui/local_discovery/local_discovery_ui_handler.h',
     ],
     'chrome_browser_ui_toolbar_model_sources': [
-      'browser/ui/android/toolbar/toolbar_model_android.cc',
-      'browser/ui/android/toolbar/toolbar_model_android.h',
       'browser/ui/toolbar/chrome_toolbar_model.cc',
       'browser/ui/toolbar/chrome_toolbar_model.h',
       'browser/ui/toolbar/toolbar_model_delegate.h',
@@ -3078,15 +3078,21 @@
         }],
         ['OS=="android"', {
           'dependencies': [
-            '../components/components.gyp:web_contents_delegate_android',
             '../third_party/boringssl/boringssl.gyp:boringssl',
-            'chrome_browser_jni_headers',
           ],
-          'dependencies!': [
-             '../ui/events/events.gyp:events',
-             'chrome_browser_ui_views.gyp:browser_ui_views',
+          'conditions': [
+            ['android_java_ui == 1', {
+              'sources': [ '<@(chrome_browser_ui_android_java_ui_sources)' ],
+              'dependencies': [
+                '../components/components.gyp:web_contents_delegate_android',
+                'chrome_browser_jni_headers',
+              ],
+              'dependencies!': [
+                '../ui/events/events.gyp:events',
+                'chrome_browser_ui_views.gyp:browser_ui_views',
+              ],
+            }]
           ],
-          'sources': [ '<@(chrome_browser_ui_android_non_aura_sources)' ],
         }],
         ['OS=="mac"', {
           'sources': [ '<@(chrome_browser_ui_mac_sources)' ],
diff --git a/chrome/chrome_features.gyp b/chrome/chrome_features.gyp
index 0d29f18..6ff5d76 100644
--- a/chrome/chrome_features.gyp
+++ b/chrome/chrome_features.gyp
@@ -15,6 +15,7 @@
         'buildflag_header_path': 'chrome/common/features.h',
         'buildflag_flags': [
           'ENABLE_GOOGLE_NOW=<(enable_google_now)',
+          'ANDROID_JAVA_UI=<(android_java_ui)',
         ],
       },
     },
diff --git a/chrome/chrome_features.gypi b/chrome/chrome_features.gypi
index a4d8756..06488b1e 100644
--- a/chrome/chrome_features.gypi
+++ b/chrome/chrome_features.gypi
@@ -10,6 +10,11 @@
     'variables': {
       # Conditional variables.
       'conditions': [
+        ['OS=="android"', {
+          'android_java_ui%': 1,
+        }, {
+          'android_java_ui': 0,
+        }],
         ['OS=="android" or OS=="ios"', {
           'enable_google_now%': 0,
         }, {
@@ -21,6 +26,7 @@
     # Anything in the conditions needs to be copied to the outer scope to be
     # accessible.
     'enable_google_now%': '<(enable_google_now)',
+    'android_java_ui%': '<(android_java_ui)',
 
     # Grit defines based on the feature flags. These must be manually added to
     # grit targets.
diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
index 863cedd..1912a22 100644
--- a/chrome/common/BUILD.gn
+++ b/chrome/common/BUILD.gn
@@ -40,7 +40,10 @@
 
 buildflag_header("features") {
   header = "features.h"
-  flags = [ "ENABLE_GOOGLE_NOW=$enable_google_now" ]
+  flags = [
+    "ENABLE_GOOGLE_NOW=$enable_google_now",
+    "ANDROID_JAVA_UI=$android_java_ui",
+  ]
 }
 
 # GYP version: chrome/chrome_common.gypi:common
diff --git a/chrome/common/features.gni b/chrome/common/features.gni
index 2e92745c..3188c6c 100644
--- a/chrome/common/features.gni
+++ b/chrome/common/features.gni
@@ -7,6 +7,12 @@
 
 declare_args() {
   enable_google_now = !is_ios && !is_android
+
+  # Whether the Java UI is being used (Java infobars and popups, Java native
+  # settings and first run experience, sign-in etc.).
+  # Default to true if compiling for android, but allow this being overriden
+  # through the environment.
+  android_java_ui = is_android
 }
 
 chrome_grit_defines = [ "enable_google_now=$enable_google_now" ]
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
index 69ee88a..dd363714 100644
--- a/chrome/common/pref_names.cc
+++ b/chrome/common/pref_names.cc
@@ -5,7 +5,6 @@
 #include "chrome/common/pref_names.h"
 
 #include "base/basictypes.h"
-#include "chrome/common/features.h"
 #include "chrome/common/pref_font_webkit_names.h"
 
 namespace prefs {
@@ -371,7 +370,7 @@
 // Boolean that is true when Suggest support is enabled.
 const char kSearchSuggestEnabled[] = "search.suggest_enabled";
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 // String indicating the Contextual Search enabled state.
 // "false" - opt-out (disabled)
 // "" (empty string) - undecided
@@ -995,7 +994,7 @@
 const char kAutofillGeneratedCardBubbleTimesShown[] =
     "autofill.generated_card_bubble_times_shown";
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 // A dictionary that tracks the defaults to be set on the next invocation
 // of the requestAutocomplete dialog.
 const char kAutofillDialogDefaults[] = "autofill.rac_dialog_defaults";
@@ -1260,7 +1259,7 @@
 const char kStabilitySystemUncleanShutdownCount[] =
     "user_experience_metrics.stability.system_unclean_shutdowns";
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 // Activity type that is currently in the foreground for the UMA session.
 // Uses the ActivityTypeIds::Type enum.
 const char kStabilityForegroundActivityType[] =
@@ -1420,7 +1419,7 @@
 // Customized app page names that appear on the New Tab Page.
 const char kNtpAppPageNames[] = "ntp.app_page_names";
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 // Keeps track of currently open tabs collapsed state in the Other Devices menu.
 const char kNtpCollapsedCurrentlyOpenTabs[] = "ntp.collapsed_open_tabs";
 #endif
@@ -1428,7 +1427,7 @@
 // Keeps track of which sessions are collapsed in the Other Devices menu.
 const char kNtpCollapsedForeignSessions[] = "ntp.collapsed_foreign_sessions";
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 // Keeps track of recently closed tabs collapsed state in the Other Devices
 // menu.
 const char kNtpCollapsedRecentlyClosedTabs[] =
@@ -1444,7 +1443,7 @@
 // Which page should be visible on the new tab page v4
 const char kNtpShownPage[] = "ntp.shown_page";
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 // Ordered list of website suggestions shown on the new tab page that will allow
 // retaining the order even if the suggestions change over time.
 const char kNTPSuggestionsURL[] = "ntp.suggestions_url";
@@ -1546,7 +1545,7 @@
 // corresponding access token.
 const char kGeolocationAccessToken[] = "geolocation.access_token";
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 // Boolean that controls the enabled-state of Geolocation in content.
 const char kGeolocationEnabled[] = "geolocation.enabled";
 #endif
@@ -2117,7 +2116,7 @@
 const char kWatchdogExtensionActive[] =
     "profile.extensions.activity_log.num_consumers_active";
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 // A list of partner bookmark rename/remove mappings.
 // Each list item is a dictionary containing a "url", a "provider_title" and
 // "mapped_title" entries, detailing the bookmark target URL (if any), the title
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
index 3b953ee..1ead3de 100644
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -149,7 +149,7 @@
 extern const char kSSLErrorOverrideAllowed[];
 extern const char kIncognitoModeAvailability[];
 extern const char kSearchSuggestEnabled[];
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 extern const char kContextualSearchEnabled[];
 #endif
 #if defined(OS_MACOSX)
@@ -335,7 +335,7 @@
 extern const char kAutofillDialogSaveData[];
 extern const char kAutofillDialogWalletShippingSameAsBilling[];
 extern const char kAutofillGeneratedCardBubbleTimesShown[];
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 extern const char kAutofillDialogDefaults[];
 #endif
 
@@ -418,7 +418,7 @@
 // Android has it's own metric / crash reporting implemented in Android
 // Java code so kMetricsReportingEnabled doesn't make sense. We use this
 // to inform crashes_ui that we have enabled crash reporting.
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 extern const char kCrashReportingEnabled[];
 #endif
 
@@ -433,7 +433,7 @@
 extern const char kStabilityOtherUserCrashCount[];
 extern const char kStabilityKernelCrashCount[];
 extern const char kStabilitySystemUncleanShutdownCount[];
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 extern const char kStabilityForegroundActivityType[];
 extern const char kStabilityLaunchedActivityFlags[];
 extern const char kStabilityLaunchedActivityCounts[];
@@ -503,17 +503,17 @@
 extern const char kDisablePluginFinder[];
 
 extern const char kNtpAppPageNames[];
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 extern const char kNtpCollapsedCurrentlyOpenTabs[];
 #endif
 extern const char kNtpCollapsedForeignSessions[];
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 extern const char kNtpCollapsedRecentlyClosedTabs[];
 extern const char kNtpCollapsedSnapshotDocument[];
 extern const char kNtpCollapsedSyncPromo[];
 #endif
 extern const char kNtpShownPage[];
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 extern const char kNTPSuggestionsURL[];
 extern const char kNTPSuggestionsIsPersonal[];
 #endif
@@ -554,7 +554,7 @@
 extern const char kWebAppCreateInQuickLaunchBar[];
 
 extern const char kGeolocationAccessToken[];
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 extern const char kGeolocationEnabled[];
 #endif
 
@@ -769,7 +769,7 @@
 
 extern const char kWatchdogExtensionActive[];
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 extern const char kPartnerBookmarkMappings[];
 #endif
 
diff --git a/chrome/common/url_constants.cc b/chrome/common/url_constants.cc
index 70a108201..99a662e 100644
--- a/chrome/common/url_constants.cc
+++ b/chrome/common/url_constants.cc
@@ -7,6 +7,7 @@
 #include <algorithm>
 
 #include "base/basictypes.h"
+#include "chrome/common/features.h"
 #include "content/public/common/url_constants.h"
 #include "url/url_util.h"
 
@@ -87,7 +88,7 @@
 const char kChromeUIUserActionsURL[] = "chrome://user-actions/";
 const char kChromeUIVersionURL[] = "chrome://version/";
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 const char kChromeUIContextualSearchPromoURL[] =
     "chrome://contextual-search-promo";
 const char kChromeUINativeScheme[] = "chrome-native";
diff --git a/chrome/common/url_constants.h b/chrome/common/url_constants.h
index 724b8c5f..7f471c8 100644
--- a/chrome/common/url_constants.h
+++ b/chrome/common/url_constants.h
@@ -11,6 +11,7 @@
 #include <vector>
 
 #include "build/build_config.h"
+#include "chrome/common/features.h"
 #include "content/public/common/url_constants.h"
 
 namespace chrome {
@@ -83,7 +84,7 @@
 extern const char kChromeUIUserActionsURL[];
 extern const char kChromeUIVersionURL[];
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 extern const char kChromeUIContextualSearchPromoURL[];
 extern const char kChromeUINativeScheme[];
 extern const char kChromeUINativeNewTabURL[];
diff --git a/chrome/test/base/chrome_test_suite.cc b/chrome/test/base/chrome_test_suite.cc
index 6581d13..90e4331 100644
--- a/chrome/test/base/chrome_test_suite.cc
+++ b/chrome/test/base/chrome_test_suite.cc
@@ -16,13 +16,14 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/common/chrome_constants.h"
 #include "chrome/common/chrome_paths.h"
+#include "chrome/common/features.h"
 #include "chrome/common/url_constants.h"
 #include "components/content_settings/core/common/content_settings_pattern.h"
 #include "content/public/test/test_launcher.h"
 #include "extensions/common/constants.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
 #include "base/android/jni_android.h"
 #include "chrome/browser/android/chrome_jni_registrar.h"
 #endif
@@ -82,7 +83,7 @@
     PathService::Override(base::DIR_MODULE, browser_dir_);
   }
 
-#if defined(OS_ANDROID)
+#if BUILDFLAG(ANDROID_JAVA_UI)
   ASSERT_TRUE(chrome::android::RegisterBrowserJNI(
       base::android::AttachCurrentThread()));
 #endif