From 347dc0a147199514afaaaa1f0d5949a41083efcb Mon Sep 17 00:00:00 2001
From: "ananta@chromium.org"
 <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Mon, 7 Jun 2010 01:51:16 +0000
Subject: Ensure that the context menu items displayed in ChromeFrame rendered
 pages are enabled/disabled correctly. To achieve this we now have a
 UpdateMenuItemStates function in the RenderViewContextMenuViews class which
 calls into the underlying menu's UpdateStates function which enables/disables
 items correctly.

Fixes bug http://code.google.com/p/chromium/issues/detail?id=45785

Bug=45785

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49031 0039d316-1c4b-4281-b951-d872f2087c98
---
 chrome/browser/external_tab_container.cc                            | 1 +
 chrome/browser/views/tab_contents/render_view_context_menu_views.cc | 4 ++++
 chrome/browser/views/tab_contents/render_view_context_menu_views.h  | 2 ++
 3 files changed, 7 insertions(+)

(limited to 'chrome/browser')

diff --git a/chrome/browser/external_tab_container.cc b/chrome/browser/external_tab_container.cc
index 432f277..eeefdaa 100644
--- a/chrome/browser/external_tab_container.cc
+++ b/chrome/browser/external_tab_container.cc
@@ -521,6 +521,7 @@ bool ExternalTabContainer::HandleContextMenu(const ContextMenuParams& params) {
       new RenderViewContextMenuViews(tab_contents(), params));
   external_context_menu_->SetExternal();
   external_context_menu_->Init();
+  external_context_menu_->UpdateMenuItemStates();
 
   POINT screen_pt = { params.x, params.y };
   MapWindowPoints(GetNativeView(), HWND_DESKTOP, &screen_pt, 1);
diff --git a/chrome/browser/views/tab_contents/render_view_context_menu_views.cc b/chrome/browser/views/tab_contents/render_view_context_menu_views.cc
index e719e0b..3fb8f28 100644
--- a/chrome/browser/views/tab_contents/render_view_context_menu_views.cc
+++ b/chrome/browser/views/tab_contents/render_view_context_menu_views.cc
@@ -35,6 +35,10 @@ void RenderViewContextMenuViews::SetExternal() {
 }
 #endif
 
+void RenderViewContextMenuViews::UpdateMenuItemStates() {
+  menu_->UpdateStates();
+}
+
 ////////////////////////////////////////////////////////////////////////////////
 // RenderViewContextMenuViews, protected:
 
diff --git a/chrome/browser/views/tab_contents/render_view_context_menu_views.h b/chrome/browser/views/tab_contents/render_view_context_menu_views.h
index 1203d4f..cb58698 100644
--- a/chrome/browser/views/tab_contents/render_view_context_menu_views.h
+++ b/chrome/browser/views/tab_contents/render_view_context_menu_views.h
@@ -30,6 +30,8 @@ class RenderViewContextMenuViews : public RenderViewContextMenu {
   void SetExternal();
 #endif
 
+  void UpdateMenuItemStates();
+
  protected:
   // RenderViewContextMenu implementation --------------------------------------
   virtual void PlatformInit();
-- 
cgit v1.1