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
|
// Copyright 2024 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_UI_VIEWS_EXTENSIONS_EXTENSION_INSTALLED_BUBBLE_VIEW_H_
#define CHROME_BROWSER_UI_VIEWS_EXTENSIONS_EXTENSION_INSTALLED_BUBBLE_VIEW_H_
#include <string>
#include "base/memory/raw_ptr.h"
#include "build/build_config.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/chrome_pages.h"
#include "chrome/browser/ui/extensions/extension_installed_bubble_model.h"
#include "chrome/browser/ui/extensions/extension_installed_waiter.h"
#include "extensions/common/extension.h"
#include "ui/views/bubble/bubble_dialog_delegate_view.h"
// Provides feedback to the user upon successful installation of an
// extension. Depending on the type of extension, the Bubble will
// point to:
// OMNIBOX_KEYWORD-> The omnibox.
// BROWSER_ACTION -> The browserAction icon in the toolbar.
// PAGE_ACTION -> A preview of the pageAction icon in the location
// bar which is shown while the Bubble is shown.
// GENERIC -> The app menu. This case includes pageActions that don't
// specify a default icon.
class ExtensionInstalledBubbleView : public views::BubbleDialogDelegateView {
METADATA_HEADER(ExtensionInstalledBubbleView, views::BubbleDialogDelegateView)
public:
ExtensionInstalledBubbleView(
Browser* browser,
std::unique_ptr<ExtensionInstalledBubbleModel> model);
ExtensionInstalledBubbleView(const ExtensionInstalledBubbleView&) = delete;
ExtensionInstalledBubbleView& operator=(const ExtensionInstalledBubbleView&) =
delete;
~ExtensionInstalledBubbleView() override;
static void Show(Browser* browser,
std::unique_ptr<ExtensionInstalledBubbleModel> model);
// Recalculate the anchor position for this bubble.
void UpdateAnchorView();
const ExtensionInstalledBubbleModel* model() const { return model_.get(); }
private:
// views::BubbleDialogDelegateView:
void Init() override;
void LinkClicked();
const raw_ptr<Browser> browser_;
const std::unique_ptr<ExtensionInstalledBubbleModel> model_;
};
#endif // CHROME_BROWSER_UI_VIEWS_EXTENSIONS_EXTENSION_INSTALLED_BUBBLE_VIEW_H_
|