Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3115)

Unified Diff: chrome/browser/printing/print_preview_manager.cc

Issue 6221005: Print Preview: Store preview data in the print preview controller.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/printing/print_preview_manager.cc
===================================================================
--- chrome/browser/printing/print_preview_manager.cc (revision 71344)
+++ chrome/browser/printing/print_preview_manager.cc (working copy)
@@ -1,9 +1,10 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// 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_tab_controller.h"
+#include "chrome/browser/printing/print_preview_manager.h"
+#include "base/shared_memory.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/browser/tabs/tab_strip_model.h"
@@ -17,20 +18,32 @@
namespace printing {
-PrintPreviewTabController::PrintPreviewTabController()
+PrintPreviewManager::PrintPreviewManager()
: waiting_for_new_preview_page_(false) {
}
-PrintPreviewTabController::~PrintPreviewTabController() {}
+PrintPreviewManager::~PrintPreviewManager() {
+ for (PrintPreviewDataMap::iterator it = preview_data_map_.begin();
+ it != preview_data_map_.end(); ++it) {
+ delete it->second.first; // Deleting SharedMemory;
+ }
+}
// static
-PrintPreviewTabController* PrintPreviewTabController::GetInstance() {
+PrintPreviewManager* PrintPreviewManager::GetInstance() {
if (!g_browser_process)
return NULL;
- return g_browser_process->print_preview_tab_controller();
+ return g_browser_process->print_preview_manager();
}
-TabContents* PrintPreviewTabController::GetOrCreatePreviewTab(
+// static
+bool PrintPreviewManager::IsPrintPreviewTab(TabContents* tab) {
+ const GURL& url = tab->GetURL();
+ return (url.SchemeIs(chrome::kChromeUIScheme) &&
+ url.host() == chrome::kChromeUIPrintHost);
+}
+
+TabContents* PrintPreviewManager::GetOrCreatePreviewTab(
TabContents* initiator_tab, int browser_window_id ) {
DCHECK(initiator_tab);
@@ -44,9 +57,28 @@
return CreatePrintPreviewTab(initiator_tab, browser_window_id);
}
-void PrintPreviewTabController::Observe(NotificationType type,
- const NotificationSource& source,
- const NotificationDetails& details) {
+bool PrintPreviewManager::GetPrintPreviewData(TabContents* preview_tab,
+ PrintPreviewData* data) {
+ PrintPreviewDataMap::iterator it = preview_data_map_.find(preview_tab);
+ if (it == preview_data_map_.end())
+ return false;
+ *data = it->second;
+ return true;
+}
+
+bool PrintPreviewManager::SetPrintPreviewData(TabContents* preview_tab,
+ const PrintPreviewData& data) {
+ PrintPreviewDataMap::iterator it = preview_data_map_.find(preview_tab);
+ if (it == preview_data_map_.end())
+ return false;
+ delete it->second.first; // Deleting old SharedMemory.
+ it->second = data;
+ return true;
+}
+
+void PrintPreviewManager::Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details) {
TabContents* initiator_tab = NULL;
TabContents* preview_tab = NULL;
TabContents* source_tab = NULL;
@@ -75,7 +107,7 @@
preview_tab = GetPrintPreviewForTab(source_tab);
// |source_tab| is preview tab.
- if (preview_tab == source_tab)
+ if (source_tab == preview_tab)
initiator_tab = GetInitiatorTab(source_tab);
else
initiator_tab = source_tab;
@@ -109,13 +141,14 @@
}
// If |source_tab| is |initiator_tab|, update the map entry.
- if (source_tab == initiator_tab) {
+ if (source_tab == initiator_tab)
preview_tab_map_[preview_tab] = NULL;
- }
// If |source_tab| is |preview_tab|, erase the map entry.
if (source_tab == preview_tab) {
preview_tab_map_.erase(preview_tab);
+ delete preview_data_map_[preview_tab].first; // Deleting old SharedMemory.
+ preview_data_map_.erase(preview_tab);
RemoveObservers(preview_tab);
}
@@ -123,23 +156,14 @@
RemoveObservers(initiator_tab);
}
-// static
-bool PrintPreviewTabController::IsPrintPreviewTab(TabContents* tab) {
- const GURL& url = tab->GetURL();
- return (url.SchemeIs(chrome::kChromeUIScheme) &&
- url.host() == chrome::kChromeUIPrintHost);
-}
-
-TabContents* PrintPreviewTabController::GetInitiatorTab(
- TabContents* preview_tab) {
+TabContents* PrintPreviewManager::GetInitiatorTab(TabContents* preview_tab) {
PrintPreviewTabMap::iterator it = preview_tab_map_.find(preview_tab);
if (it != preview_tab_map_.end())
return preview_tab_map_[preview_tab];
return NULL;
}
-TabContents* PrintPreviewTabController::GetPrintPreviewForTab(
- TabContents* tab) {
+TabContents* PrintPreviewManager::GetPrintPreviewForTab(TabContents* tab) {
PrintPreviewTabMap::iterator it = preview_tab_map_.find(tab);
if (it != preview_tab_map_.end())
return tab;
@@ -151,7 +175,7 @@
return NULL;
}
-TabContents* PrintPreviewTabController::CreatePrintPreviewTab(
+TabContents* PrintPreviewManager::CreatePrintPreviewTab(
TabContents* initiator_tab, int browser_window_id) {
Browser* current_browser = BrowserList::FindBrowserWithID(browser_window_id);
// Add a new tab next to initiator tab.
@@ -162,27 +186,29 @@
params.tabstrip_index = current_browser->tabstrip_model()->
GetWrapperIndex(initiator_tab) + 1;
browser::Navigate(&params);
- TabContentsWrapper* preview_tab = params.target_contents;
- preview_tab->tab_contents()->Activate();
+ TabContents* preview_tab = params.target_contents->tab_contents();
+ preview_tab->Activate();
// Add an entry to the map.
- preview_tab_map_[preview_tab->tab_contents()] = initiator_tab;
+ preview_tab_map_[preview_tab] = initiator_tab;
+ preview_data_map_[preview_tab] =
+ std::make_pair(static_cast<base::SharedMemory*>(NULL), 0U);
waiting_for_new_preview_page_ = true;
AddObservers(initiator_tab);
- AddObservers(preview_tab->tab_contents());
+ AddObservers(preview_tab);
- return preview_tab->tab_contents();
+ return preview_tab;
}
-void PrintPreviewTabController::AddObservers(TabContents* tab) {
+void PrintPreviewManager::AddObservers(TabContents* tab) {
registrar_.Add(this, NotificationType::TAB_CONTENTS_DESTROYED,
Source<TabContents>(tab));
registrar_.Add(this, NotificationType::NAV_ENTRY_COMMITTED,
Source<NavigationController>(&tab->controller()));
}
-void PrintPreviewTabController::RemoveObservers(TabContents* tab) {
+void PrintPreviewManager::RemoveObservers(TabContents* tab) {
registrar_.Remove(this, NotificationType::TAB_CONTENTS_DESTROYED,
Source<TabContents>(tab));
registrar_.Remove(this, NotificationType::NAV_ENTRY_COMMITTED,
« no previous file with comments | « chrome/browser/printing/print_preview_manager.h ('k') | chrome/browser/printing/print_preview_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698