1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_DEVICE_NOTIFICATIONS_DEVICE_STATUS_ICON_RENDERER_H_
#define CHROME_BROWSER_DEVICE_NOTIFICATIONS_DEVICE_STATUS_ICON_RENDERER_H_
#include "chrome/browser/device_notifications/device_system_tray_icon.h"
#include "chrome/browser/device_notifications/device_system_tray_icon_renderer.h"
#include "chrome/browser/profiles/profile_attributes_storage_observer.h"
#include "chrome/browser/status_icons/status_icon.h"
#include "chrome/browser/ui/chrome_pages.h"
class DeviceStatusIconRenderer : public DeviceSystemTrayIconRenderer,
public StatusIconMenuModel::Delegate,
public ProfileAttributesStorageObserver {
public:
explicit DeviceStatusIconRenderer(
DeviceSystemTrayIcon* device_system_tray_icon,
const chrome::HelpSource help_source,
const int about_device_message_id);
DeviceStatusIconRenderer(const DeviceStatusIconRenderer&) = delete;
DeviceStatusIconRenderer& operator=(const DeviceStatusIconRenderer&) = delete;
~DeviceStatusIconRenderer() override;
// DeviceSystemTrayIconRenderer
void AddProfile(Profile* profile) override;
void RemoveProfile(Profile* profile) override;
void NotifyConnectionUpdated(Profile* profile) override;
void ExecuteCommandForTesting(int command_id, int event_flags) {
ExecuteCommand(command_id, event_flags);
}
private:
// Returns a label for About device button.
std::u16string GetAboutDeviceLabel();
// Show the help center article for the device category.
void ShowHelpCenterUrl();
void ShowContentSettings(base::WeakPtr<Profile> profile);
void ShowSiteSettings(base::WeakPtr<Profile> profile,
const url::Origin& origin);
// ProfileAttributesStorage::Observer
void OnProfileNameChanged(const base::FilePath& profile_path,
const std::u16string& old_profile_name) override;
// StatusIconMenuModel::Delegate
void ExecuteCommand(int command_id, int event_flags) override;
// Add a new menu item with the label |label| and the click handler |callback|
// to the |menu|.
void AddItem(StatusIconMenuModel* menu,
std::u16string label,
base::RepeatingClosure callback);
void RefreshIcon();
chrome::HelpSource help_source_;
int about_device_message_id_;
// Reference to our status icon (if any) - owned by the StatusTray.
raw_ptr<StatusIcon> status_icon_ = nullptr;
// The mapping of clickable system tray icon items to their click handlers
std::vector<base::RepeatingClosure> command_id_callbacks_;
base::WeakPtrFactory<DeviceStatusIconRenderer> weak_factory_{this};
};
#endif // CHROME_BROWSER_DEVICE_NOTIFICATIONS_DEVICE_STATUS_ICON_RENDERER_H_
|