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

Side by Side Diff: chrome/browser/ui/webui/settings/chromeos/android_apps_handler.cc

Issue 2873853002: arc: Handle ARC events in MD Settings (Closed)
Patch Set: fix annotations Created 3 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/settings/chromeos/android_apps_handler.h" 5 #include "chrome/browser/ui/webui/settings/chromeos/android_apps_handler.h"
6 6
7 #include "base/values.h" 7 #include "base/values.h"
8 #include "chrome/browser/chromeos/arc/arc_util.h" 8 #include "chrome/browser/chromeos/arc/arc_util.h"
9 #include "chrome/browser/profiles/profile.h" 9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/ui/app_list/arc/arc_app_utils.h" // kSettingsAppId 10 #include "chrome/browser/ui/app_list/arc/arc_app_utils.h" // kSettingsAppId
11 #include "ui/events/event_constants.h" 11 #include "ui/events/event_constants.h"
12 12
13 namespace chromeos { 13 namespace chromeos {
14 namespace settings { 14 namespace settings {
15 15
16 AndroidAppsHandler::AndroidAppsHandler(Profile* profile) 16 AndroidAppsHandler::AndroidAppsHandler(Profile* profile)
17 : arc_prefs_observer_(this), profile_(profile), weak_ptr_factory_(this) {} 17 : arc_prefs_observer_(this),
18 arc_session_manager_observer_(this),
19 profile_(profile),
20 weak_ptr_factory_(this) {}
18 21
19 AndroidAppsHandler::~AndroidAppsHandler() {} 22 AndroidAppsHandler::~AndroidAppsHandler() {}
20 23
21 void AndroidAppsHandler::RegisterMessages() { 24 void AndroidAppsHandler::RegisterMessages() {
22 web_ui()->RegisterMessageCallback( 25 web_ui()->RegisterMessageCallback(
23 "requestAndroidAppsInfo", 26 "requestAndroidAppsInfo",
24 base::Bind(&AndroidAppsHandler::HandleRequestAndroidAppsInfo, 27 base::Bind(&AndroidAppsHandler::HandleRequestAndroidAppsInfo,
25 weak_ptr_factory_.GetWeakPtr())); 28 weak_ptr_factory_.GetWeakPtr()));
26 web_ui()->RegisterMessageCallback( 29 web_ui()->RegisterMessageCallback(
27 "showAndroidAppsSettings", 30 "showAndroidAppsSettings",
28 base::Bind(&AndroidAppsHandler::ShowAndroidAppsSettings, 31 base::Bind(&AndroidAppsHandler::ShowAndroidAppsSettings,
29 weak_ptr_factory_.GetWeakPtr())); 32 weak_ptr_factory_.GetWeakPtr()));
30 } 33 }
31 34
32 void AndroidAppsHandler::OnJavascriptAllowed() { 35 void AndroidAppsHandler::OnJavascriptAllowed() {
33 ArcAppListPrefs* arc_prefs = ArcAppListPrefs::Get(profile_); 36 ArcAppListPrefs* arc_prefs = ArcAppListPrefs::Get(profile_);
34 if (arc_prefs) 37 if (arc_prefs) {
35 arc_prefs_observer_.Add(arc_prefs); 38 arc_prefs_observer_.Add(arc_prefs);
39 // arc::ArcSessionManager is assosiated with primary profile.
40 arc_session_manager_observer_.Add(arc::ArcSessionManager::Get());
41 }
36 } 42 }
37 43
38 void AndroidAppsHandler::OnJavascriptDisallowed() { 44 void AndroidAppsHandler::OnJavascriptDisallowed() {
39 arc_prefs_observer_.RemoveAll(); 45 arc_prefs_observer_.RemoveAll();
46 arc_session_manager_observer_.RemoveAll();
40 } 47 }
41 48
42 void AndroidAppsHandler::OnAppRegistered( 49 void AndroidAppsHandler::OnAppRegistered(
43 const std::string& app_id, 50 const std::string& app_id,
44 const ArcAppListPrefs::AppInfo& app_info) { 51 const ArcAppListPrefs::AppInfo& app_info) {
45 OnAppChanged(app_id); 52 OnAppChanged(app_id);
46 } 53 }
47 54
48 void AndroidAppsHandler::OnAppRemoved(const std::string& app_id) { 55 void AndroidAppsHandler::OnAppRemoved(const std::string& app_id) {
49 OnAppChanged(app_id); 56 OnAppChanged(app_id);
50 } 57 }
51 58
52 void AndroidAppsHandler::OnAppReadyChanged(const std::string& app_id,
53 bool ready) {
54 OnAppChanged(app_id);
55 }
56
57 void AndroidAppsHandler::OnAppChanged(const std::string& app_id) { 59 void AndroidAppsHandler::OnAppChanged(const std::string& app_id) {
58 if (app_id != arc::kSettingsAppId) 60 if (app_id != arc::kSettingsAppId)
59 return; 61 return;
60 SendAndroidAppsInfo(); 62 SendAndroidAppsInfo();
61 } 63 }
62 64
65 void AndroidAppsHandler::OnArcPlayStoreEnabledChanged(bool enabled) {
66 SendAndroidAppsInfo();
67 }
68
63 std::unique_ptr<base::DictionaryValue> 69 std::unique_ptr<base::DictionaryValue>
64 AndroidAppsHandler::BuildAndroidAppsInfo() { 70 AndroidAppsHandler::BuildAndroidAppsInfo() {
65 std::unique_ptr<base::DictionaryValue> info(new base::DictionaryValue); 71 std::unique_ptr<base::DictionaryValue> info(new base::DictionaryValue);
66 bool app_ready = false; 72 info->SetBoolean("playStoreEnabled",
67 if (arc::IsArcPlayStoreEnabledForProfile(profile_)) { 73 arc::IsArcPlayStoreEnabledForProfile(profile_));
68 std::unique_ptr<ArcAppListPrefs::AppInfo> app_info = 74 info->SetBoolean(
69 ArcAppListPrefs::Get(profile_)->GetApp(arc::kSettingsAppId); 75 "appSettingsAvailable",
70 app_ready = app_info && app_info->ready; 76 ArcAppListPrefs::Get(profile_)->IsRegistered(arc::kSettingsAppId));
stevenjb 2017/05/10 16:47:03 I definitely prefer settingsAppAvailable since we
khmel 2017/05/10 21:48:12 Renamed it as in your previous comment.
71 }
72 info->SetBoolean("appReady", app_ready);
73 return info; 77 return info;
74 } 78 }
75 79
76 void AndroidAppsHandler::HandleRequestAndroidAppsInfo( 80 void AndroidAppsHandler::HandleRequestAndroidAppsInfo(
77 const base::ListValue* args) { 81 const base::ListValue* args) {
78 SendAndroidAppsInfo(); 82 SendAndroidAppsInfo();
79 } 83 }
80 84
81 void AndroidAppsHandler::SendAndroidAppsInfo() { 85 void AndroidAppsHandler::SendAndroidAppsInfo() {
82 AllowJavascript(); 86 AllowJavascript();
83 std::unique_ptr<base::DictionaryValue> info = BuildAndroidAppsInfo(); 87 std::unique_ptr<base::DictionaryValue> info = BuildAndroidAppsInfo();
84 CallJavascriptFunction("cr.webUIListenerCallback", 88 CallJavascriptFunction("cr.webUIListenerCallback",
85 base::Value("android-apps-info-update"), *info); 89 base::Value("android-apps-info-update"), *info);
86 } 90 }
87 91
88 void AndroidAppsHandler::ShowAndroidAppsSettings(const base::ListValue* args) { 92 void AndroidAppsHandler::ShowAndroidAppsSettings(const base::ListValue* args) {
89 CHECK_EQ(1U, args->GetSize()); 93 CHECK_EQ(1U, args->GetSize());
90 bool activated_from_keyboard = false; 94 bool activated_from_keyboard = false;
91 args->GetBoolean(0, &activated_from_keyboard); 95 args->GetBoolean(0, &activated_from_keyboard);
92 int flags = activated_from_keyboard ? ui::EF_NONE : ui::EF_LEFT_MOUSE_BUTTON; 96 int flags = activated_from_keyboard ? ui::EF_NONE : ui::EF_LEFT_MOUSE_BUTTON;
93 97
94 // Settings in secondary profile cannot access ARC. 98 // Settings in secondary profile cannot access ARC.
95 CHECK(arc::IsArcAllowedForProfile(profile_)); 99 CHECK(arc::IsArcAllowedForProfile(profile_));
96 arc::LaunchAndroidSettingsApp(profile_, flags); 100 arc::LaunchAndroidSettingsApp(profile_, flags);
97 } 101 }
98 102
99 } // namespace settings 103 } // namespace settings
100 } // namespace chromeos 104 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698