1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- // Copyright 2021 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "ash/webui/eche_app_ui/eche_alert_generator.h"
- #include "ash/components/multidevice/logging/logging.h"
- #include "ash/constants/ash_pref_names.h"
- #include "ash/webui/eche_app_ui/launch_app_helper.h"
- #include "components/prefs/pref_service.h"
- namespace ash {
- namespace eche_app {
- // The screen lock notification
- const char kEcheAppScreenLockNotifierId[] =
- "eche_app_notification_ids.screen_lock";
- // The notification type from WebUI is CONNECTION_FAILED or CONNECTION_LOST
- // allow users to retry.
- const char kEcheAppRetryConnectionNotifierId[] =
- "eche_app_notification_ids.retry_connection";
- // The notification type from WebUI is DEVICE_IDLE
- // allow users to retry.
- const char kEcheAppInactivityNotifierId[] =
- "eche_app_notification_ids.inactivity";
- // The notification type from WebUI without any actions need to do.
- const char kEcheAppFromWebWithoutButtonNotifierId[] =
- "eche_app_notification_ids.from_web_without_button";
- // The toast id of EcheApp.
- const char kEcheAppToastId[] = "eche_app_toast_id";
- // TODO(crbug.com/1241352): This should probably have a ?p=<FEATURE_NAME> at
- // some point.
- const char kEcheAppLearnMoreUrl[] = "https://support.google.com/chromebook";
- EcheAlertGenerator::EcheAlertGenerator(LaunchAppHelper* launch_app_helper,
- PrefService* pref_service)
- : launch_app_helper_(launch_app_helper), pref_service_(pref_service) {
- pref_change_registrar_.Init(pref_service);
- pref_change_registrar_.Add(
- ash::prefs::kEnableAutoScreenLock,
- base::BindRepeating(&EcheAlertGenerator::OnEnableScreenLockChanged,
- base::Unretained(this)));
- }
- EcheAlertGenerator::~EcheAlertGenerator() {
- pref_change_registrar_.RemoveAll();
- }
- void EcheAlertGenerator::ShowNotification(const std::u16string& title,
- const std::u16string& message,
- mojom::WebNotificationType type) {
- PA_LOG(INFO) << "echeapi EcheAlertGenerator ShowNotification";
- launch_app_helper_->ShowNotification(
- title, message,
- std::make_unique<LaunchAppHelper::NotificationInfo>(
- LaunchAppHelper::NotificationInfo::Category::kWebUI, type));
- }
- void EcheAlertGenerator::ShowToast(const std::u16string& text) {
- PA_LOG(INFO) << "echeapi EcheAlertGenerator ShowToast";
- launch_app_helper_->ShowToast(text);
- }
- void EcheAlertGenerator::Bind(
- mojo::PendingReceiver<mojom::NotificationGenerator> receiver) {
- notification_receiver_.reset();
- notification_receiver_.Bind(std::move(receiver));
- }
- void EcheAlertGenerator::OnEnableScreenLockChanged() {
- bool lock_screen_enabled =
- pref_service_->GetBoolean(ash::prefs::kEnableAutoScreenLock);
- if (lock_screen_enabled) {
- launch_app_helper_->CloseNotification(kEcheAppScreenLockNotifierId);
- }
- }
- } // namespace eche_app
- } // namespace ash
|