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); |