download_shelf_context_menu_view.h revision f2477e01787aa58f445919b809d89e252beef54f
1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_UI_VIEWS_DOWNLOAD_DOWNLOAD_SHELF_CONTEXT_MENU_VIEW_H_
6#define CHROME_BROWSER_UI_VIEWS_DOWNLOAD_DOWNLOAD_SHELF_CONTEXT_MENU_VIEW_H_
7
8#include "base/basictypes.h"
9#include "base/compiler_specific.h"
10#include "base/memory/scoped_ptr.h"
11#include "base/time/time.h"
12#include "chrome/browser/download/download_shelf_context_menu.h"
13#include "ui/base/ui_base_types.h"
14
15namespace content {
16class DownloadItem;
17class PageNavigator;
18}
19
20namespace gfx {
21class Rect;
22}
23
24namespace views {
25class MenuRunner;
26class Widget;
27}
28
29class DownloadShelfContextMenuView : public DownloadShelfContextMenu {
30 public:
31  DownloadShelfContextMenuView(content::DownloadItem* download_item,
32                               content::PageNavigator* navigator);
33  virtual ~DownloadShelfContextMenuView();
34
35  base::TimeTicks close_time() const { return close_time_; }
36
37  // |rect| is the bounding area for positioning the menu in screen coordinates.
38  // The menu will be positioned above or below but not overlapping |rect|.
39  void Run(views::Widget* parent_widget,
40           const gfx::Rect& rect,
41           ui::MenuSourceType source_type);
42
43 private:
44  scoped_ptr<views::MenuRunner> menu_runner_;
45
46  // Time the menu was closed.
47  base::TimeTicks close_time_;
48
49  DISALLOW_COPY_AND_ASSIGN(DownloadShelfContextMenuView);
50};
51
52#endif  // CHROME_BROWSER_UI_VIEWS_DOWNLOAD_DOWNLOAD_SHELF_CONTEXT_MENU_VIEW_H_
53