Use prod Android Messages URL instead of staging.

This change adds a new flag which, if true, points Android Messages
ChromeOS integration to the prod Messages for Web endpoint rather than
the sandbox URL which is being used for staging. This flag is off by
default to continue to allow dogfood until all our web experiments have
rolled out to production.

Bug: 881664
Change-Id: I4e84a19d2a9fb84972889e42644f6fe8d4464389
Reviewed-on: https://chromium-review.googlesource.com/1222880
Commit-Queue: Jeremy Klein <[email protected]>
Reviewed-by: Jeremy Klein <[email protected]>
Reviewed-by: Steven Bennetts <[email protected]>
Cr-Commit-Position: refs/heads/master@{#591172}
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 2155b82..829c421 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -1692,6 +1692,10 @@
      flag_descriptions::kAndroidMessagesIntegrationName,
      flag_descriptions::kAndroidMessagesIntegrationDescription, kOsCrOS,
      FEATURE_VALUE_TYPE(chromeos::features::kAndroidMessagesIntegration)},
+    {"enable_android_messages_prod_endpoint",
+     flag_descriptions::kAndroidMessagesProdEndpointName,
+     flag_descriptions::kAndroidMessagesProdEndpointDescription, kOsCrOS,
+     FEATURE_VALUE_TYPE(chromeos::features::kAndroidMessagesProdEndpoint)},
     {
         "enable-background-blur", flag_descriptions::kEnableBackgroundBlurName,
         flag_descriptions::kEnableBackgroundBlurDescription, kOsCrOS,
diff --git a/chrome/browser/chromeos/android_sms/BUILD.gn b/chrome/browser/chromeos/android_sms/BUILD.gn
index 3531206c..3753dec 100644
--- a/chrome/browser/chromeos/android_sms/BUILD.gn
+++ b/chrome/browser/chromeos/android_sms/BUILD.gn
@@ -12,6 +12,7 @@
 
   deps = [
     "//base",
+    "//chromeos:chromeos",
     "//url",
   ]
 }
diff --git a/chrome/browser/chromeos/android_sms/android_sms_urls.cc b/chrome/browser/chromeos/android_sms/android_sms_urls.cc
index d5abce2..8d7e2d1 100644
--- a/chrome/browser/chromeos/android_sms/android_sms_urls.cc
+++ b/chrome/browser/chromeos/android_sms/android_sms_urls.cc
@@ -9,6 +9,7 @@
 #include "base/command_line.h"
 #include "base/optional.h"
 #include "chrome/browser/chromeos/android_sms/android_sms_switches.h"
+#include "chromeos/chromeos_features.h"
 #include "url/gurl.h"
 
 namespace chromeos {
@@ -18,9 +19,11 @@
 namespace {
 
 // NOTE: Using internal staging server until changes roll out to prod.
-const char kDefaultAndroidMessagesUrl[] =
+const char kAndroidMessagesSandboxUrl[] =
     "https://android-messages.sandbox.google.com/";
 
+const char kAndroidMessagesProdUrl[] = "https://messages.android.com/";
+
 // NOTE: Using experiment mods until changes roll out to prod.
 const char kExperimentUrlParams[] =
     "?e=DittoServiceWorker,DittoPwa,DittoIndexedDb";
@@ -31,8 +34,11 @@
   std::string url_string =
       command_line->GetSwitchValueASCII(switches::kAlternateAndroidMessagesUrl);
 
+  bool use_prod_url = base::FeatureList::IsEnabled(
+      chromeos::features::kAndroidMessagesProdEndpoint);
   if (url_string.empty())
-    url_string = std::string(kDefaultAndroidMessagesUrl);
+    url_string = std::string(use_prod_url ? kAndroidMessagesProdUrl
+                                          : kAndroidMessagesSandboxUrl);
   if (with_experiments)
     url_string += std::string(kExperimentUrlParams);
   return GURL(url_string);
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 9fdee00..e0746e94 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -47,6 +47,12 @@
 const char kAndroidMessagesIntegrationDescription[] =
     "Enables Chrome OS integration with Android messages.";
 
+const char kAndroidMessagesProdEndpointName[] =
+    "Use Android Messages prod endpoint";
+const char kAndroidMessagesProdEndpointDescription[] =
+    "For Android Messages integration, point to the prod endpoint instead of "
+    "sandbox.";
+
 const char kAppBannersName[] = "App Banners";
 const char kAppBannersDescription[] =
     "Enable the display of Progressive Web App banners, which prompt a user to "
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 2ef9733..b62169e 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -55,6 +55,9 @@
 extern const char kAndroidMessagesIntegrationName[];
 extern const char kAndroidMessagesIntegrationDescription[];
 
+extern const char kAndroidMessagesProdEndpointName[];
+extern const char kAndroidMessagesProdEndpointDescription[];
+
 extern const char kAppBannersName[];
 extern const char kAppBannersDescription[];
 
diff --git a/chromeos/chromeos_features.cc b/chromeos/chromeos_features.cc
index 4ca6a97..2b8e7784 100644
--- a/chromeos/chromeos_features.cc
+++ b/chromeos/chromeos_features.cc
@@ -12,6 +12,10 @@
 const base::Feature kAndroidMessagesIntegration{
     "AndroidMessagesIntegration", base::FEATURE_DISABLED_BY_DEFAULT};
 
+// Point to the production Android Messages URL instead of sandbox.
+const base::Feature kAndroidMessagesProdEndpoint{
+    "AndroidMessagesProdEndpoint", base::FEATURE_DISABLED_BY_DEFAULT};
+
 // Enables or disables native ChromeVox support for Arc.
 const base::Feature kChromeVoxArcSupport{"ChromeVoxArcSupport",
                                          base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/chromeos/chromeos_features.h b/chromeos/chromeos_features.h
index 5bf4b4d..9fcdab82 100644
--- a/chromeos/chromeos_features.h
+++ b/chromeos/chromeos_features.h
@@ -16,6 +16,7 @@
 // alongside the definition of their values in the .cc file.
 
 CHROMEOS_EXPORT extern const base::Feature kAndroidMessagesIntegration;
+CHROMEOS_EXPORT extern const base::Feature kAndroidMessagesProdEndpoint;
 CHROMEOS_EXPORT extern const base::Feature kChromeVoxArcSupport;
 CHROMEOS_EXPORT extern const base::Feature kDriveFs;
 CHROMEOS_EXPORT extern const base::Feature kEnableUnifiedMultiDeviceSettings;
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index b8a84d9..1d4b447 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -29218,6 +29218,7 @@
   <int value="-170986053" label="EnableManualFallbacksFilling:enabled"/>
   <int value="-167744090" label="EnableHomeLauncher:enabled"/>
   <int value="-165756594" label="enable-touch-feedback"/>
+  <int value="-161782023" label="AndroidMessagesProdEndpoint:enabled"/>
   <int value="-159877930" label="MaterialDesignUserManager:disabled"/>
   <int value="-158549277" label="enable-embeddedsearch-api"/>
   <int value="-152677714" label="AsmJsToWebAssembly:enabled"/>
@@ -30243,6 +30244,7 @@
   <int value="1888812860" label="ChromeModernAlternateCardLayout:enabled"/>
   <int value="1889076955" label="disable-app-link"/>
   <int value="1891210939" label="enable-blink-features"/>
+  <int value="1891312456" label="AndroidMessagesProdEndpoint:disabled"/>
   <int value="1892201400" label="enable-password-separated-signin-flow"/>
   <int value="1892311584" label="NewStyleNotifications:disabled"/>
   <int value="1892640848" label="third-party-doodle-url"/>