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

Unified Diff: chrome/browser/ui/ash/system_tray_client.cc

Issue 2839043004: chromeos: Refactor ash SystemTrayDelegate enterprise methods to mojo (Closed)
Patch Set: review comments Created 3 years, 8 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
« no previous file with comments | « chrome/browser/ui/ash/system_tray_client.h ('k') | chrome/browser/ui/ash/system_tray_client_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/ash/system_tray_client.cc
diff --git a/chrome/browser/ui/ash/system_tray_client.cc b/chrome/browser/ui/ash/system_tray_client.cc
index aaad8337a05ac914b6a3ad9a18a2825c08d730db..f3cedfecf19d11d4a2ba913c25f7824d59888f7f 100644
--- a/chrome/browser/ui/ash/system_tray_client.cc
+++ b/chrome/browser/ui/ash/system_tray_client.cc
@@ -16,8 +16,11 @@
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/chromeos/accessibility/accessibility_util.h"
#include "chrome/browser/chromeos/bluetooth/bluetooth_pairing_dialog.h"
+#include "chrome/browser/chromeos/login/help_app_launcher.h"
#include "chrome/browser/chromeos/login/ui/login_display_host.h"
#include "chrome/browser/chromeos/options/network_config_view.h"
+#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
+#include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h"
#include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/chromeos/set_time_dialog.h"
#include "chrome/browser/chromeos/system/system_clock.h"
@@ -106,6 +109,15 @@ SystemTrayClient::SystemTrayClient() : binding_(this) {
if (UpgradeDetector::GetInstance()->notify_upgrade())
HandleUpdateAvailable();
+ // If the device is enterprise managed then send ash the enterprise domain.
+ policy::BrowserPolicyConnectorChromeOS* policy_connector =
+ g_browser_process->platform_part()->browser_policy_connector_chromeos();
+ policy::DeviceCloudPolicyManagerChromeOS* policy_manager =
+ policy_connector->GetDeviceCloudPolicyManager();
+ if (policy_manager)
+ policy_manager->core()->store()->AddObserver(this);
+ UpdateEnterpriseDomain();
+
DCHECK(!g_instance);
g_instance = this;
}
@@ -114,6 +126,13 @@ SystemTrayClient::~SystemTrayClient() {
DCHECK_EQ(this, g_instance);
g_instance = nullptr;
+ policy::BrowserPolicyConnectorChromeOS* connector =
+ g_browser_process->platform_part()->browser_policy_connector_chromeos();
+ policy::DeviceCloudPolicyManagerChromeOS* policy_manager =
+ connector->GetDeviceCloudPolicyManager();
+ if (policy_manager)
+ policy_manager->core()->store()->RemoveObserver(this);
+
g_browser_process->platform_part()->GetSystemClock()->RemoveObserver(this);
}
@@ -305,6 +324,22 @@ void SystemTrayClient::ShowPublicAccountInfo() {
chrome::ShowPolicy(displayer.browser());
}
+void SystemTrayClient::ShowEnterpriseInfo() {
+ // At the login screen, lock screen, etc. show enterprise help in a window.
+ if (session_manager::SessionManager::Get()->IsUserSessionBlocked()) {
+ scoped_refptr<chromeos::HelpAppLauncher> help_app(
+ new chromeos::HelpAppLauncher(nullptr /* parent_window */));
+ help_app->ShowHelpTopic(chromeos::HelpAppLauncher::HELP_ENTERPRISE);
+ return;
+ }
+
+ // Otherwise show enterprise help in a browser tab.
+ chrome::ScopedTabbedBrowserDisplayer displayer(
+ ProfileManager::GetActiveUserProfile());
+ chrome::ShowSingletonTab(displayer.browser(),
+ GURL(chrome::kLearnMoreEnterpriseURL));
+}
+
void SystemTrayClient::ShowNetworkConfigure(const std::string& network_id) {
// UI is not available at the lock screen.
if (session_manager::SessionManager::Get()->IsScreenLocked())
@@ -417,3 +452,29 @@ void SystemTrayClient::Observe(int type,
DCHECK_EQ(chrome::NOTIFICATION_UPGRADE_RECOMMENDED, type);
HandleUpdateAvailable();
}
+
+////////////////////////////////////////////////////////////////////////////////
+// policy::CloudPolicyStore::Observer
+void SystemTrayClient::OnStoreLoaded(policy::CloudPolicyStore* store) {
+ UpdateEnterpriseDomain();
+}
+
+void SystemTrayClient::OnStoreError(policy::CloudPolicyStore* store) {
+ UpdateEnterpriseDomain();
+}
+
+void SystemTrayClient::UpdateEnterpriseDomain() {
+ policy::BrowserPolicyConnectorChromeOS* connector =
+ g_browser_process->platform_part()->browser_policy_connector_chromeos();
+ const std::string enterprise_domain = connector->GetEnterpriseDomain();
+ const bool active_directory_managed = connector->IsActiveDirectoryManaged();
+ if (enterprise_domain == last_enterprise_domain_ &&
+ active_directory_managed == last_active_directory_managed_) {
+ return;
+ }
+ // Send to ash, which will add an item to the system tray.
+ system_tray_->SetEnterpriseDomain(enterprise_domain,
+ active_directory_managed);
+ last_enterprise_domain_ = enterprise_domain;
+ last_active_directory_managed_ = active_directory_managed;
+}
« no previous file with comments | « chrome/browser/ui/ash/system_tray_client.h ('k') | chrome/browser/ui/ash/system_tray_client_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698