Commit 44bbe5e6 authored by thestig@chromium.org's avatar thestig@chromium.org

Print preview: Disable the right context menu items in print preview.

BUG=106876,106915
TEST=see bug

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@113943 0039d316-1c4b-4281-b951-d872f2087c98
parent 42baef7a
// 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/printing/print_preview_context_menu_observer.h"
#include "base/logging.h"
#include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/printing/print_preview_tab_controller.h"
PrintPreviewContextMenuObserver::PrintPreviewContextMenuObserver(
TabContentsWrapper* tab) : tab_(tab) {
}
PrintPreviewContextMenuObserver::~PrintPreviewContextMenuObserver() {
}
bool PrintPreviewContextMenuObserver::IsPrintPreviewTab() {
printing::PrintPreviewTabController* controller =
printing::PrintPreviewTabController::GetInstance();
if (!controller)
return false;
return !!controller->GetPrintPreviewForTab(tab_);
}
bool PrintPreviewContextMenuObserver::IsCommandIdSupported(int command_id) {
switch (command_id) {
case IDC_PRINT:
case IDC_VIEW_SOURCE:
case IDC_CONTENT_CONTEXT_VIEWFRAMESOURCE:
case IDC_CONTENT_CONTEXT_VIEWPAGEINFO:
case IDC_CONTENT_CONTEXT_SEARCHWEBFOR:
return IsPrintPreviewTab();
default:
return false;
}
}
bool PrintPreviewContextMenuObserver::IsCommandIdEnabled(int command_id) {
switch (command_id) {
case IDC_PRINT:
case IDC_VIEW_SOURCE:
case IDC_CONTENT_CONTEXT_VIEWFRAMESOURCE:
case IDC_CONTENT_CONTEXT_VIEWPAGEINFO:
case IDC_CONTENT_CONTEXT_SEARCHWEBFOR:
return false;
default:
NOTREACHED();
return true;
}
}
// 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_PRINTING_PRINT_PREVIEW_CONTEXT_MENU_OBSERVER_H_
#define CHROME_BROWSER_PRINTING_PRINT_PREVIEW_CONTEXT_MENU_OBSERVER_H_
#pragma once
#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "chrome/browser/tab_contents/render_view_context_menu_observer.h"
class TabContentsWrapper;
class PrintPreviewContextMenuObserver : public RenderViewContextMenuObserver {
public:
explicit PrintPreviewContextMenuObserver(TabContentsWrapper* tab);
virtual ~PrintPreviewContextMenuObserver();
// RenderViewContextMenuObserver implementation.
virtual bool IsCommandIdSupported(int command_id) OVERRIDE;
virtual bool IsCommandIdEnabled(int command_id) OVERRIDE;
private:
bool IsPrintPreviewTab();
TabContentsWrapper* tab_;
DISALLOW_COPY_AND_ASSIGN(PrintPreviewContextMenuObserver);
};
#endif // CHROME_BROWSER_PRINTING_PRINT_PREVIEW_CONTEXT_MENU_OBSERVER_H_
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include "chrome/browser/prefs/incognito_mode_prefs.h" #include "chrome/browser/prefs/incognito_mode_prefs.h"
#include "chrome/browser/prefs/pref_member.h" #include "chrome/browser/prefs/pref_member.h"
#include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/printing/print_preview_context_menu_observer.h"
#include "chrome/browser/printing/print_preview_tab_controller.h" #include "chrome/browser/printing/print_preview_tab_controller.h"
#include "chrome/browser/printing/print_view_manager.h" #include "chrome/browser/printing/print_view_manager.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
...@@ -597,6 +598,14 @@ void RenderViewContextMenu::InitMenu() { ...@@ -597,6 +598,14 @@ void RenderViewContextMenu::InitMenu() {
AppendAllExtensionItems(); AppendAllExtensionItems();
AppendDeveloperItems(); AppendDeveloperItems();
if (!print_preview_menu_observer_.get()) {
TabContentsWrapper* wrapper =
TabContentsWrapper::GetCurrentWrapperForContents(source_tab_contents_);
print_preview_menu_observer_.reset(
new PrintPreviewContextMenuObserver(wrapper));
}
observers_.AddObserver(print_preview_menu_observer_.get());
} }
void RenderViewContextMenu::LookUpInDictionary() { void RenderViewContextMenu::LookUpInDictionary() {
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include "webkit/glue/window_open_disposition.h" #include "webkit/glue/window_open_disposition.h"
class ExtensionMenuItem; class ExtensionMenuItem;
class PrintPreviewContextMenuObserver;
class Profile; class Profile;
class RenderViewHost; class RenderViewHost;
class TabContents; class TabContents;
...@@ -268,6 +269,9 @@ class RenderViewContextMenu : public ui::SimpleMenuModel::Delegate, ...@@ -268,6 +269,9 @@ class RenderViewContextMenu : public ui::SimpleMenuModel::Delegate,
// An observer that handles a 'spell-checker options' submenu. // An observer that handles a 'spell-checker options' submenu.
scoped_ptr<SpellCheckerSubMenuObserver> spellchecker_submenu_observer_; scoped_ptr<SpellCheckerSubMenuObserver> spellchecker_submenu_observer_;
// An observer that disables menu items when print preview is active.
scoped_ptr<PrintPreviewContextMenuObserver> print_preview_menu_observer_;
// Our observers. // Our observers.
mutable ObserverList<RenderViewContextMenuObserver> observers_; mutable ObserverList<RenderViewContextMenuObserver> observers_;
......
...@@ -1945,6 +1945,8 @@ ...@@ -1945,6 +1945,8 @@
'browser/printing/print_job_worker.cc', 'browser/printing/print_job_worker.cc',
'browser/printing/print_job_worker.h', 'browser/printing/print_job_worker.h',
'browser/printing/print_job_worker_owner.h', 'browser/printing/print_job_worker_owner.h',
'browser/printing/print_preview_context_menu_observer.cc',
'browser/printing/print_preview_context_menu_observer.h',
'browser/printing/print_preview_data_service.cc', 'browser/printing/print_preview_data_service.cc',
'browser/printing/print_preview_data_service.h', 'browser/printing/print_preview_data_service.h',
'browser/printing/print_preview_message_handler.cc', 'browser/printing/print_preview_message_handler.cc',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment