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

Unified Diff: chrome/browser/printing/print_preview_tab_controller.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_tab_controller.cc
===================================================================
--- chrome/browser/printing/print_preview_tab_controller.cc (revision 71104)
+++ chrome/browser/printing/print_preview_tab_controller.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 "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"
@@ -21,7 +22,13 @@
: waiting_for_new_preview_page_(false) {
}
-PrintPreviewTabController::~PrintPreviewTabController() {}
+PrintPreviewTabController::~PrintPreviewTabController() {
+ for (PrintPreviewDataMap::iterator it = preview_data_map_.begin();
+ it != preview_data_map_.end();
+ ++it) {
kmadhusu 2011/01/13 18:03:14 nit: This can fit in the previous line.
Lei Zhang 2011/01/13 20:59:18 Done.
+ delete it->second.first; // Deleting SharedMemory;
+ }
+}
// static
PrintPreviewTabController* PrintPreviewTabController::GetInstance() {
@@ -30,6 +37,13 @@
return g_browser_process->print_preview_tab_controller();
}
+// static
+bool PrintPreviewTabController::IsPrintPreviewTab(TabContents* tab) {
+ const GURL& url = tab->GetURL();
+ return (url.SchemeIs(chrome::kChromeUIScheme) &&
+ url.host() == chrome::kChromeUIPrintHost);
+}
+
TabContents* PrintPreviewTabController::GetOrCreatePreviewTab(
TabContents* initiator_tab, int browser_window_id ) {
DCHECK(initiator_tab);
@@ -44,6 +58,26 @@
return CreatePrintPreviewTab(initiator_tab, browser_window_id);
}
+bool PrintPreviewTabController::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 PrintPreviewTabController::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 PrintPreviewTabController::Observe(NotificationType type,
const NotificationSource& source,
const NotificationDetails& details) {
@@ -75,7 +109,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 +143,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,13 +158,6 @@
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) {
PrintPreviewTabMap::iterator it = preview_tab_map_.find(preview_tab);
@@ -167,6 +195,8 @@
// Add an entry to the map.
preview_tab_map_[preview_tab->tab_contents()] = initiator_tab;
+ preview_data_map_[preview_tab->tab_contents()] =
kmadhusu 2011/01/13 18:03:14 Rather than making calls to the same function cons
Lei Zhang 2011/01/13 20:59:18 Done.
+ std::make_pair(static_cast<base::SharedMemory*>(NULL), 0U);
waiting_for_new_preview_page_ = true;
AddObservers(initiator_tab);

Powered by Google App Engine
This is Rietveld 408576698