views: Split DownloadShelfContextMenuWin out to its own header file.

This moves the implementation of DownloadShelfContextMenuWin from download_item_view.cc
to download_shelf_context_menu_view.*

Renames DownloadShelfContextMenuWin to DownloadShelfContextMenuView.

BUG=28978
TEST=None

[email protected],[email protected]

Review URL: http://codereview.chromium.org/7056001

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86237 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/ui/views/download/download_item_view.cc b/chrome/browser/ui/views/download/download_item_view.cc
index a4b85c06..0be0d11 100644
--- a/chrome/browser/ui/views/download/download_item_view.cc
+++ b/chrome/browser/ui/views/download/download_item_view.cc
@@ -16,9 +16,9 @@
 #include "base/utf_string_conversions.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/download/download_item_model.h"
-#include "chrome/browser/download/download_shelf_context_menu.h"
 #include "chrome/browser/download/download_util.h"
 #include "chrome/browser/themes/theme_service.h"
+#include "chrome/browser/ui/views/download/download_shelf_context_menu_view.h"
 #include "chrome/browser/ui/views/download/download_shelf_view.h"
 #include "grit/generated_resources.h"
 #include "grit/theme_resources.h"
@@ -33,7 +33,6 @@
 #include "unicode/uchar.h"
 #include "views/controls/button/native_button.h"
 #include "views/controls/label.h"
-#include "views/controls/menu/menu_2.h"
 #include "views/widget/root_view.h"
 #include "views/widget/widget.h"
 
@@ -79,42 +78,6 @@
 // light-on-dark themes.
 static const double kDownloadItemLuminanceMod = 0.8;
 
-// DownloadShelfContextMenuWin -------------------------------------------------
-
-class DownloadShelfContextMenuWin : public DownloadShelfContextMenu {
- public:
-  explicit DownloadShelfContextMenuWin(BaseDownloadItemModel* model)
-      : DownloadShelfContextMenu(model) {
-    DCHECK(model);
-  }
-
-  void Run(const gfx::Point& point) {
-    if (download_item()->IsComplete())
-      menu_.reset(new views::Menu2(GetFinishedMenuModel()));
-    else
-      menu_.reset(new views::Menu2(GetInProgressMenuModel()));
-
-    // The menu's alignment is determined based on the UI layout.
-    views::Menu2::Alignment alignment;
-    if (base::i18n::IsRTL())
-      alignment = views::Menu2::ALIGN_TOPRIGHT;
-    else
-      alignment = views::Menu2::ALIGN_TOPLEFT;
-    menu_->RunMenuAt(point, alignment);
-  }
-
-  // This method runs when the caller has been deleted and we should not attempt
-  // to access |download_|.
-  void Stop() {
-    set_download_item(NULL);
-  }
-
- private:
-  scoped_ptr<views::Menu2> menu_;
-};
-
-// DownloadItemView ------------------------------------------------------------
-
 DownloadItemView::DownloadItemView(DownloadItem* download,
     DownloadShelfView* parent,
     BaseDownloadItemModel* model)
@@ -661,7 +624,7 @@
   views::View::ConvertPointToScreen(this, &point);
 
   if (!context_menu_.get())
-    context_menu_.reset(new DownloadShelfContextMenuWin(model_.get()));
+    context_menu_.reset(new DownloadShelfContextMenuView(model_.get()));
   // When we call the Run method on the menu, it runs an inner message loop
   // that might causes us to be deleted.
   bool deleted = false;
diff --git a/chrome/browser/ui/views/download/download_item_view.h b/chrome/browser/ui/views/download/download_item_view.h
index 295d52d1..4fe8f46 100644
--- a/chrome/browser/ui/views/download/download_item_view.h
+++ b/chrome/browser/ui/views/download/download_item_view.h
@@ -36,7 +36,7 @@
 class BaseDownloadItemModel;
 class DownloadShelfView;
 class SkBitmap;
-class DownloadShelfContextMenuWin;
+class DownloadShelfContextMenuView;
 
 namespace gfx {
 class Image;
@@ -276,7 +276,7 @@
   ScopedRunnableMethodFactory<DownloadItemView> reenable_method_factory_;
 
   // The currently running download context menu.
-  scoped_ptr<DownloadShelfContextMenuWin> context_menu_;
+  scoped_ptr<DownloadShelfContextMenuView> context_menu_;
 
   // If non-NULL, set to true when this object is deleted.
   // (Used when showing the context menu as it runs an inner message loop that
diff --git a/chrome/browser/ui/views/download/download_shelf_context_menu_view.cc b/chrome/browser/ui/views/download/download_shelf_context_menu_view.cc
new file mode 100644
index 0000000..fb2736d
--- /dev/null
+++ b/chrome/browser/ui/views/download/download_shelf_context_menu_view.cc
@@ -0,0 +1,39 @@
+// Copyright (c) 2011 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 "chrome/browser/ui/views/download/download_shelf_context_menu_view.h"
+
+#include "base/i18n/rtl.h"
+#include "base/logging.h"
+#include "chrome/browser/download/download_item.h"
+#include "chrome/browser/download/download_item_model.h"
+#include "ui/gfx/point.h"
+#include "views/controls/menu/menu_2.h"
+
+DownloadShelfContextMenuView::DownloadShelfContextMenuView(
+    BaseDownloadItemModel* model)
+    : DownloadShelfContextMenu(model) {
+    DCHECK(model);
+}
+
+DownloadShelfContextMenuView::~DownloadShelfContextMenuView() {}
+
+void DownloadShelfContextMenuView::Run(const gfx::Point& point) {
+  if (download_item()->IsComplete())
+    menu_.reset(new views::Menu2(GetFinishedMenuModel()));
+  else
+    menu_.reset(new views::Menu2(GetInProgressMenuModel()));
+
+  // The menu's alignment is determined based on the UI layout.
+  views::Menu2::Alignment alignment;
+  if (base::i18n::IsRTL())
+    alignment = views::Menu2::ALIGN_TOPRIGHT;
+  else
+    alignment = views::Menu2::ALIGN_TOPLEFT;
+  menu_->RunMenuAt(point, alignment);
+}
+
+void DownloadShelfContextMenuView::Stop() {
+  set_download_item(NULL);
+}
diff --git a/chrome/browser/ui/views/download/download_shelf_context_menu_view.h b/chrome/browser/ui/views/download/download_shelf_context_menu_view.h
new file mode 100644
index 0000000..1266005
--- /dev/null
+++ b/chrome/browser/ui/views/download/download_shelf_context_menu_view.h
@@ -0,0 +1,40 @@
+// Copyright (c) 2011 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.
+
+#ifndef CHROME_BROWSER_UI_VIEWS_DOWNLOAD_DOWNLOAD_SHELF_CONTEXT_MENU_VIEW_H_
+#define CHROME_BROWSER_UI_VIEWS_DOWNLOAD_DOWNLOAD_SHELF_CONTEXT_MENU_VIEW_H_
+#pragma once
+
+#include "base/basictypes.h"
+#include "base/memory/scoped_ptr.h"
+#include "chrome/browser/download/download_shelf_context_menu.h"
+
+class BaseDownloadItemModel;
+
+namespace gfx {
+class Point;
+}
+
+namespace views {
+class Menu2;
+}
+
+class DownloadShelfContextMenuView : public DownloadShelfContextMenu {
+ public:
+  explicit DownloadShelfContextMenuView(BaseDownloadItemModel* model);
+  virtual ~DownloadShelfContextMenuView();
+
+  void Run(const gfx::Point& point);
+
+  // This method runs when the caller has been deleted and we should not attempt
+  // to access download_item().
+  void Stop();
+
+ private:
+  scoped_ptr<views::Menu2> menu_;
+
+  DISALLOW_COPY_AND_ASSIGN(DownloadShelfContextMenuView);
+};
+
+#endif  // CHROME_BROWSER_UI_VIEWS_DOWNLOAD_DOWNLOAD_SHELF_CONTEXT_MENU_VIEW_H_
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 5a8cbeb..6432159c 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -2972,6 +2972,8 @@
         'browser/ui/views/download/download_in_progress_dialog_view.h',
         'browser/ui/views/download/download_item_view.cc',
         'browser/ui/views/download/download_item_view.h',
+        'browser/ui/views/download/download_shelf_context_menu_view.cc',
+        'browser/ui/views/download/download_shelf_context_menu_view.h',
         'browser/ui/views/download/download_shelf_view.cc',
         'browser/ui/views/download/download_shelf_view.h',
         'browser/ui/views/download/download_started_animation_win.cc',
@@ -4044,6 +4046,8 @@
                 ['include', '^browser/ui/views/download/download_in_progress_dialog_view.h'],
                 ['include', '^browser/ui/views/download/download_item_view.cc'],
                 ['include', '^browser/ui/views/download/download_item_view.h'],
+                ['include', '^browser/ui/views/download/download_shelf_context_menu_view.cc'],
+                ['include', '^browser/ui/views/download/download_shelf_context_menu_view.h'],
                 ['include', '^browser/ui/views/download/download_shelf_view.cc'],
                 ['include', '^browser/ui/views/download/download_shelf_view.h'],
                 ['include', '^browser/ui/views/dragged_tab_controller.cc'],