Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1999)

Unified Diff: chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc

Issue 2707133006: Start ARC and sign in after Chrome OS login (Closed)
Patch Set: Start ARC and sign in after Chrome OS login Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc
diff --git a/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc b/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc
index 78512a0c0193e24f2dd0c8aa44b01fcd69cc693d..8cf669faa6399785d8a1876768e582cd75e39373 100644
--- a/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc
+++ b/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc
@@ -24,6 +24,7 @@
#include "chrome/common/pref_names.h"
#include "chrome/grit/generated_resources.h"
#include "components/arc/arc_service_manager.h"
+#include "components/arc/arc_util.h"
#include "components/crx_file/id_util.h"
#include "components/pref_registry/pref_registry_syncable.h"
#include "components/prefs/scoped_user_pref_update.h"
@@ -151,6 +152,11 @@ bool IsArcAlive() {
return arc_session_manager && arc_session_manager->IsAllowed();
}
+bool IsArcAndroidEnabledForProfile(const Profile* profile) {
hidehiko 2017/03/02 15:57:51 Could you add detailed document about what is "And
victorhsieh 2017/03/02 18:49:52 Done.
+ return arc::ShouldArcAlwaysStart() ||
+ arc::IsArcPlayStoreEnabledForProfile(profile);
+}
+
bool GetInt64FromPref(const base::DictionaryValue* dict,
const std::string& key,
int64_t* value) {
@@ -306,6 +312,12 @@ base::FilePath ArcAppListPrefs::GetIconPath(
void ArcAppListPrefs::RequestIcon(const std::string& app_id,
ui::ScaleFactor scale_factor) {
+ // ArcSessionManager can be terminated during test tear down, before callback
+ // into this function.
+ // TODO(victorhsieh): figure out the best way/place to handle this situation.
+ if (arc::ArcSessionManager::Get() == nullptr)
+ return;
+
if (!IsRegistered(app_id)) {
VLOG(2) << "Request to load icon for non-registered app: " << app_id << ".";
return;
@@ -397,7 +409,7 @@ bool ArcAppListPrefs::HasObserver(Observer* observer) {
std::unique_ptr<ArcAppListPrefs::PackageInfo> ArcAppListPrefs::GetPackage(
const std::string& package_name) const {
- if (!IsArcAlive() || !arc::IsArcPlayStoreEnabledForProfile(profile_))
+ if (!IsArcAlive() || !IsArcAndroidEnabledForProfile(profile_))
return nullptr;
const base::DictionaryValue* package = nullptr;
@@ -429,7 +441,8 @@ std::unique_ptr<ArcAppListPrefs::PackageInfo> ArcAppListPrefs::GetPackage(
}
std::vector<std::string> ArcAppListPrefs::GetAppIds() const {
- if (!IsArcAlive() || !arc::IsArcPlayStoreEnabledForProfile(profile_)) {
+ if (!arc::ShouldArcAlwaysStart() &&
hidehiko 2017/03/02 15:57:51 The condition looks complicated, because IsArcAndr
victorhsieh 2017/03/02 18:49:52 Now I shortcut ShouldArcAlwaysStart to return earl
+ (!IsArcAlive() || !IsArcAndroidEnabledForProfile(profile_))) {
// Default ARC apps available before OptIn.
std::vector<std::string> ids;
for (const auto& default_app : default_apps_.app_map()) {
@@ -443,7 +456,6 @@ std::vector<std::string> ArcAppListPrefs::GetAppIds() const {
std::vector<std::string> ArcAppListPrefs::GetAppIdsNoArcEnabledCheck() const {
std::vector<std::string> ids;
-
const base::DictionaryValue* apps = prefs_->GetDictionary(prefs::kArcApps);
DCHECK(apps);
@@ -462,7 +474,7 @@ std::vector<std::string> ArcAppListPrefs::GetAppIdsNoArcEnabledCheck() const {
std::unique_ptr<ArcAppListPrefs::AppInfo> ArcAppListPrefs::GetApp(
const std::string& app_id) const {
// Information for default app is available before ARC enabled.
- if ((!IsArcAlive() || !arc::IsArcPlayStoreEnabledForProfile(profile_)) &&
+ if ((!IsArcAlive() || !IsArcAndroidEnabledForProfile(profile_)) &&
!default_apps_.HasApp(app_id))
return std::unique_ptr<AppInfo>();
@@ -518,7 +530,7 @@ std::unique_ptr<ArcAppListPrefs::AppInfo> ArcAppListPrefs::GetApp(
}
bool ArcAppListPrefs::IsRegistered(const std::string& app_id) const {
- if ((!IsArcAlive() || !arc::IsArcPlayStoreEnabledForProfile(profile_)) &&
+ if ((!IsArcAlive() || !IsArcAndroidEnabledForProfile(profile_)) &&
!default_apps_.HasApp(app_id))
return false;
@@ -609,6 +621,10 @@ void ArcAppListPrefs::RemoveAllApps() {
void ArcAppListPrefs::OnArcPlayStoreEnabledChanged(bool enabled) {
UpdateDefaultAppsHiddenState();
+ // TODO(victorhsieh): Implement opt-in and opt-out.
+ if (arc::ShouldArcAlwaysStart())
+ return;
+
if (enabled)
NotifyRegisteredApps();
else
@@ -718,7 +734,7 @@ void ArcAppListPrefs::MaybeAddNonLaunchableApp(
const base::Optional<std::string>& name,
const std::string& package_name,
const std::string& activity) {
- DCHECK(arc::IsArcPlayStoreEnabledForProfile(profile_));
+ DCHECK(IsArcAndroidEnabledForProfile(profile_));
if (IsRegistered(GetAppId(package_name, activity)))
return;
@@ -855,7 +871,7 @@ void ArcAppListPrefs::RemoveApp(const std::string& app_id) {
void ArcAppListPrefs::AddOrUpdatePackagePrefs(
PrefService* prefs, const arc::mojom::ArcPackageInfo& package) {
- DCHECK(arc::IsArcPlayStoreEnabledForProfile(profile_));
+ DCHECK(IsArcAndroidEnabledForProfile(profile_));
const std::string& package_name = package.package_name;
default_apps_.MaybeMarkPackageUninstalled(package_name, false);
if (package_name.empty()) {
@@ -878,7 +894,7 @@ void ArcAppListPrefs::AddOrUpdatePackagePrefs(
void ArcAppListPrefs::RemovePackageFromPrefs(PrefService* prefs,
const std::string& package_name) {
- DCHECK(arc::IsArcPlayStoreEnabledForProfile(profile_));
+ DCHECK(IsArcAndroidEnabledForProfile(profile_));
default_apps_.MaybeMarkPackageUninstalled(package_name, true);
if (!default_apps_.HasPackage(package_name)) {
DictionaryPrefUpdate update(prefs, prefs::kArcPackages);
@@ -895,7 +911,7 @@ void ArcAppListPrefs::RemovePackageFromPrefs(PrefService* prefs,
void ArcAppListPrefs::OnAppListRefreshed(
std::vector<arc::mojom::AppInfoPtr> apps) {
- DCHECK(arc::IsArcPlayStoreEnabledForProfile(profile_));
+ DCHECK(IsArcAndroidEnabledForProfile(profile_));
std::vector<std::string> old_apps = GetAppIds();
ready_apps_.clear();
@@ -1184,7 +1200,7 @@ bool ArcAppListPrefs::IsUnknownPackage(const std::string& package_name) const {
void ArcAppListPrefs::OnPackageAdded(
arc::mojom::ArcPackageInfoPtr package_info) {
- DCHECK(arc::IsArcPlayStoreEnabledForProfile(profile_));
+ DCHECK(IsArcAndroidEnabledForProfile(profile_));
// Ignore packages installed by internal sync.
DCHECK(sync_service_);
@@ -1202,7 +1218,7 @@ void ArcAppListPrefs::OnPackageAdded(
void ArcAppListPrefs::OnPackageModified(
arc::mojom::ArcPackageInfoPtr package_info) {
- DCHECK(arc::IsArcPlayStoreEnabledForProfile(profile_));
+ DCHECK(IsArcAndroidEnabledForProfile(profile_));
AddOrUpdatePackagePrefs(prefs_, *package_info);
for (auto& observer : observer_list_)
observer.OnPackageModified(*package_info);
@@ -1210,7 +1226,7 @@ void ArcAppListPrefs::OnPackageModified(
void ArcAppListPrefs::OnPackageListRefreshed(
std::vector<arc::mojom::ArcPackageInfoPtr> packages) {
- DCHECK(arc::IsArcPlayStoreEnabledForProfile(profile_));
+ DCHECK(IsArcAndroidEnabledForProfile(profile_));
const std::vector<std::string> old_packages(GetPackagesFromPrefs());
std::unordered_set<std::string> current_packages;
@@ -1242,8 +1258,7 @@ std::vector<std::string> ArcAppListPrefs::GetPackagesFromPrefs() const {
std::vector<std::string> ArcAppListPrefs::GetPackagesFromPrefs(
bool installed) const {
std::vector<std::string> packages;
- if ((!IsArcAlive() || !arc::IsArcPlayStoreEnabledForProfile(profile_)) &&
- installed)
+ if ((!IsArcAlive() || !IsArcAndroidEnabledForProfile(profile_)) && installed)
return packages;
const base::DictionaryValue* package_prefs =

Powered by Google App Engine
This is Rietveld 408576698