Commit 2990808d authored by wutao's avatar wutao Committed by Commit Bot

Reland "ambient: Use different backend servers"

This is a reland of c8d093ac

Original change's description:
> ambient: Use different backend servers
> 
> This patch configs the dev channel to use testing server. But users can
> overwrite it with a flag.
> 
> Bug: b/148692733
> Test: manual
> Change-Id: I967281bc1421c37d9c1ff74a0815d6a6da570da3
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2342134
> Commit-Queue: Tao Wu <wutao@chromium.org>
> Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
> Reviewed-by: Xiaohui Chen <xiaohuic@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#799318}

Bug: b/148692733
Change-Id: Id8140c368da44089e15ac9ded3b4faaf8f19efef
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2364267Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Reviewed-by: default avatarXiaohui Chen <xiaohuic@chromium.org>
Commit-Queue: Tao Wu <wutao@chromium.org>
Cr-Commit-Position: refs/heads/master@{#799793}
parent be6bbab3
...@@ -218,7 +218,10 @@ class BackdropURLLoader { ...@@ -218,7 +218,10 @@ class BackdropURLLoader {
scoped_refptr<network::SharedURLLoaderFactory> loader_factory_; scoped_refptr<network::SharedURLLoaderFactory> loader_factory_;
}; };
AmbientBackendControllerImpl::AmbientBackendControllerImpl() = default; AmbientBackendControllerImpl::AmbientBackendControllerImpl()
: backdrop_client_config_(ash::AmbientClient::Get()->ShouldUseProdServer()
? BackdropClientConfig::ServerType::kProd
: BackdropClientConfig::ServerType::kDev) {}
AmbientBackendControllerImpl::~AmbientBackendControllerImpl() = default; AmbientBackendControllerImpl::~AmbientBackendControllerImpl() = default;
......
...@@ -49,6 +49,9 @@ class ASH_PUBLIC_EXPORT AmbientClient { ...@@ -49,6 +49,9 @@ class ASH_PUBLIC_EXPORT AmbientClient {
virtual void RequestWakeLockProvider( virtual void RequestWakeLockProvider(
mojo::PendingReceiver<device::mojom::WakeLockProvider> receiver) = 0; mojo::PendingReceiver<device::mojom::WakeLockProvider> receiver) = 0;
// Whether to use backend production server.
virtual bool ShouldUseProdServer() = 0;
protected: protected:
AmbientClient(); AmbientClient();
AmbientClient(const AmbientClient&) = delete; AmbientClient(const AmbientClient&) = delete;
......
...@@ -62,6 +62,10 @@ void TestAmbientClient::IssueAccessToken(const std::string& access_token, ...@@ -62,6 +62,10 @@ void TestAmbientClient::IssueAccessToken(const std::string& access_token,
} }
} }
bool TestAmbientClient::ShouldUseProdServer() {
return false;
}
bool TestAmbientClient::IsAccessTokenRequestPending() const { bool TestAmbientClient::IsAccessTokenRequestPending() const {
return !!pending_callback_; return !!pending_callback_;
} }
......
...@@ -27,6 +27,7 @@ class ASH_PUBLIC_EXPORT TestAmbientClient : public AmbientClient { ...@@ -27,6 +27,7 @@ class ASH_PUBLIC_EXPORT TestAmbientClient : public AmbientClient {
scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override; scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override;
void RequestWakeLockProvider( void RequestWakeLockProvider(
mojo::PendingReceiver<device::mojom::WakeLockProvider> receiver) override; mojo::PendingReceiver<device::mojom::WakeLockProvider> receiver) override;
bool ShouldUseProdServer() override;
// Simulate to issue an |access_token|. // Simulate to issue an |access_token|.
// If |with_error| is true, will return an empty access token. // If |with_error| is true, will return an empty access token.
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/signin/identity_manager_factory.h" #include "chrome/browser/signin/identity_manager_factory.h"
#include "chrome/common/channel_info.h"
#include "chromeos/constants/chromeos_features.h" #include "chromeos/constants/chromeos_features.h"
#include "components/account_id/account_id.h" #include "components/account_id/account_id.h"
#include "components/prefs/pref_service.h" #include "components/prefs/pref_service.h"
...@@ -23,6 +24,7 @@ ...@@ -23,6 +24,7 @@
#include "components/signin/public/identity_manager/scope_set.h" #include "components/signin/public/identity_manager/scope_set.h"
#include "components/user_manager/user.h" #include "components/user_manager/user.h"
#include "components/user_manager/user_manager.h" #include "components/user_manager/user_manager.h"
#include "components/version_info/channel.h"
#include "content/public/browser/device_service.h" #include "content/public/browser/device_service.h"
#include "google_apis/gaia/gaia_auth_util.h" #include "google_apis/gaia/gaia_auth_util.h"
#include "google_apis/gaia/google_service_auth_error.h" #include "google_apis/gaia/google_service_auth_error.h"
...@@ -164,3 +166,12 @@ void AmbientClientImpl::GetAccessToken( ...@@ -164,3 +166,12 @@ void AmbientClientImpl::GetAccessToken(
/*expiration_time=*/base::Time::Now()); /*expiration_time=*/base::Time::Now());
} }
} }
bool AmbientClientImpl::ShouldUseProdServer() {
if (chromeos::features::IsAmbientModeDevUseProdEnabled())
return true;
auto channel = chrome::GetChannel();
return channel == version_info::Channel::STABLE ||
channel == version_info::Channel::BETA;
}
...@@ -30,6 +30,7 @@ class AmbientClientImpl : public ash::AmbientClient { ...@@ -30,6 +30,7 @@ class AmbientClientImpl : public ash::AmbientClient {
scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override; scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override;
void RequestWakeLockProvider( void RequestWakeLockProvider(
mojo::PendingReceiver<device::mojom::WakeLockProvider> receiver) override; mojo::PendingReceiver<device::mojom::WakeLockProvider> receiver) override;
bool ShouldUseProdServer() override;
private: private:
void GetAccessToken(GetAccessTokenCallback callback, void GetAccessToken(GetAccessTokenCallback callback,
......
...@@ -30,6 +30,8 @@ class AmbientClientImplTest : public ChromeAshTestBase { ...@@ -30,6 +30,8 @@ class AmbientClientImplTest : public ChromeAshTestBase {
void SetUp() override { void SetUp() override {
scoped_feature_list_.InitAndEnableFeature( scoped_feature_list_.InitAndEnableFeature(
chromeos::features::kAmbientModeFeature); chromeos::features::kAmbientModeFeature);
// Needed by ash.
ambient_client_ = std::make_unique<AmbientClientImpl>();
AshTestBase::SetUp(); AshTestBase::SetUp();
ASSERT_TRUE(data_dir_.CreateUniqueTempDir()); ASSERT_TRUE(data_dir_.CreateUniqueTempDir());
...@@ -46,7 +48,6 @@ class AmbientClientImplTest : public ChromeAshTestBase { ...@@ -46,7 +48,6 @@ class AmbientClientImplTest : public ChromeAshTestBase {
std::make_unique<IdentityTestEnvironmentProfileAdaptor>(profile_); std::make_unique<IdentityTestEnvironmentProfileAdaptor>(profile_);
user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>(
std::make_unique<chromeos::FakeChromeUserManager>()); std::make_unique<chromeos::FakeChromeUserManager>());
ambient_client_ = std::make_unique<AmbientClientImpl>();
} }
void TearDown() override { void TearDown() override {
......
...@@ -119,6 +119,10 @@ void ChromeBrowserMainExtraPartsAsh::PreProfileInit() { ...@@ -119,6 +119,10 @@ void ChromeBrowserMainExtraPartsAsh::PreProfileInit() {
cast_config_controller_media_router_ = cast_config_controller_media_router_ =
std::make_unique<CastConfigControllerMediaRouter>(); std::make_unique<CastConfigControllerMediaRouter>();
// Needed by AmbientController in ash.
if (chromeos::features::IsAmbientModeEnabled())
ambient_client_ = std::make_unique<AmbientClientImpl>();
ash_shell_init_ = std::make_unique<AshShellInit>(); ash_shell_init_ = std::make_unique<AshShellInit>();
screen_orientation_delegate_ = screen_orientation_delegate_ =
...@@ -207,9 +211,6 @@ void ChromeBrowserMainExtraPartsAsh::PostProfileInit() { ...@@ -207,9 +211,6 @@ void ChromeBrowserMainExtraPartsAsh::PostProfileInit() {
void ChromeBrowserMainExtraPartsAsh::PostBrowserStart() { void ChromeBrowserMainExtraPartsAsh::PostBrowserStart() {
mobile_data_notifications_ = std::make_unique<MobileDataNotifications>(); mobile_data_notifications_ = std::make_unique<MobileDataNotifications>();
if (chromeos::features::IsAmbientModeEnabled())
ambient_client_ = std::make_unique<AmbientClientImpl>();
} }
void ChromeBrowserMainExtraPartsAsh::PostMainMessageLoopRun() { void ChromeBrowserMainExtraPartsAsh::PostMainMessageLoopRun() {
...@@ -219,9 +220,6 @@ void ChromeBrowserMainExtraPartsAsh::PostMainMessageLoopRun() { ...@@ -219,9 +220,6 @@ void ChromeBrowserMainExtraPartsAsh::PostMainMessageLoopRun() {
exo_parts_.reset(); exo_parts_.reset();
#endif #endif
if (chromeos::features::IsAmbientModeEnabled())
ambient_client_.reset();
night_light_client_.reset(); night_light_client_.reset();
mobile_data_notifications_.reset(); mobile_data_notifications_.reset();
chrome_launcher_controller_initializer_.reset(); chrome_launcher_controller_initializer_.reset();
...@@ -246,6 +244,8 @@ void ChromeBrowserMainExtraPartsAsh::PostMainMessageLoopRun() { ...@@ -246,6 +244,8 @@ void ChromeBrowserMainExtraPartsAsh::PostMainMessageLoopRun() {
// needs to be released before destroying the profile. // needs to be released before destroying the profile.
app_list_client_.reset(); app_list_client_.reset();
ash_shell_init_.reset(); ash_shell_init_.reset();
ambient_client_.reset();
cast_config_controller_media_router_.reset(); cast_config_controller_media_router_.reset();
if (chromeos::NetworkConnect::IsInitialized()) if (chromeos::NetworkConnect::IsInitialized())
chromeos::NetworkConnect::Shutdown(); chromeos::NetworkConnect::Shutdown();
......
...@@ -29,6 +29,11 @@ const base::Feature kAmbientModeFeature{"ChromeOSAmbientMode", ...@@ -29,6 +29,11 @@ const base::Feature kAmbientModeFeature{"ChromeOSAmbientMode",
const base::Feature kAmbientModePhotoPreviewFeature{ const base::Feature kAmbientModePhotoPreviewFeature{
"ChromeOSAmbientModePhotoPreview", base::FEATURE_DISABLED_BY_DEFAULT}; "ChromeOSAmbientModePhotoPreview", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to allow Dev channel to use Prod server feature.
const base::Feature kAmbientModeDevUseProdFeature{
"ChromeOSAmbientModeDevChannelUseProdServer",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable ARC ADB sideloading support. // Controls whether to enable ARC ADB sideloading support.
const base::Feature kArcAdbSideloadingFeature{ const base::Feature kArcAdbSideloadingFeature{
"ArcAdbSideloading", base::FEATURE_DISABLED_BY_DEFAULT}; "ArcAdbSideloading", base::FEATURE_DISABLED_BY_DEFAULT};
...@@ -526,6 +531,10 @@ bool IsAmbientModePhotoPreviewEnabled() { ...@@ -526,6 +531,10 @@ bool IsAmbientModePhotoPreviewEnabled() {
return base::FeatureList::IsEnabled(kAmbientModePhotoPreviewFeature); return base::FeatureList::IsEnabled(kAmbientModePhotoPreviewFeature);
} }
bool IsAmbientModeDevUseProdEnabled() {
return base::FeatureList::IsEnabled(kAmbientModeDevUseProdFeature);
}
bool IsBetterUpdateEnabled() { bool IsBetterUpdateEnabled() {
return base::FeatureList::IsEnabled(kBetterUpdateScreen); return base::FeatureList::IsEnabled(kBetterUpdateScreen);
} }
......
...@@ -22,6 +22,8 @@ extern const base::Feature kAmbientModeFeature; ...@@ -22,6 +22,8 @@ extern const base::Feature kAmbientModeFeature;
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
extern const base::Feature kAmbientModePhotoPreviewFeature; extern const base::Feature kAmbientModePhotoPreviewFeature;
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
extern const base::Feature kAmbientModeDevUseProdFeature;
COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
extern const base::Feature kArcAdbSideloadingFeature; extern const base::Feature kArcAdbSideloadingFeature;
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
extern const base::Feature kArcManagedAdbSideloadingSupport; extern const base::Feature kArcManagedAdbSideloadingSupport;
...@@ -228,6 +230,7 @@ extern const base::Feature kImeMozcProto; ...@@ -228,6 +230,7 @@ extern const base::Feature kImeMozcProto;
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) bool IsAmbientModeEnabled(); COMPONENT_EXPORT(CHROMEOS_CONSTANTS) bool IsAmbientModeEnabled();
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) bool IsAmbientModePhotoPreviewEnabled(); COMPONENT_EXPORT(CHROMEOS_CONSTANTS) bool IsAmbientModePhotoPreviewEnabled();
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) bool IsAmbientModeDevUseProdEnabled();
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) bool IsAssistantEnabled(); COMPONENT_EXPORT(CHROMEOS_CONSTANTS) bool IsAssistantEnabled();
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) bool IsBetterUpdateEnabled(); COMPONENT_EXPORT(CHROMEOS_CONSTANTS) bool IsBetterUpdateEnabled();
COMPONENT_EXPORT(CHROMEOS_CONSTANTS) bool IsChildSpecificSigninEnabled(); COMPONENT_EXPORT(CHROMEOS_CONSTANTS) bool IsChildSpecificSigninEnabled();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment