blob: 9068b141290d6601bde7ee86d8fb9a00c1e8a918 [file] [log] [blame]
// Copyright 2017 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_BUBBLE_ANCHOR_UTIL_VIEWS_H_
#define CHROME_BROWSER_UI_VIEWS_BUBBLE_ANCHOR_UTIL_VIEWS_H_
#include "base/memory/raw_ptr.h"
#include "chrome/browser/ui/bubble_anchor_util.h"
#include "ui/views/bubble/bubble_border.h"
#include "ui/views/bubble/bubble_dialog_delegate_view.h"
namespace views {
class Button;
} // namespace views
class Browser;
namespace bubble_anchor_util {
struct AnchorConfiguration {
// The bubble anchor.
views::BubbleAnchor anchor = nullptr;
// The view to be highlighted, or null if it should not be used.
raw_ptr<views::Button, DanglingUntriaged> highlighted_button = nullptr;
// The arrow position for the bubble.
views::BubbleBorder::Arrow bubble_arrow = views::BubbleBorder::TOP_LEFT;
};
// Returns the anchor configuration for bubbles that are aligned to the page
// info bubble.
AnchorConfiguration GetPageInfoAnchorConfiguration(
Browser* browser,
Anchor = Anchor::kLocationBar);
// Returns the anchor configuration for the permission bubble.
AnchorConfiguration GetPermissionPromptBubbleAnchorConfiguration(
Browser* browser);
// Returns the anchor configuration for bubbles that are aligned to the app menu
// button.
AnchorConfiguration GetAppMenuAnchorConfiguration(Browser* browser);
} // namespace bubble_anchor_util
#endif // CHROME_BROWSER_UI_VIEWS_BUBBLE_ANCHOR_UTIL_VIEWS_H_