| Index: chrome/browser/printing/print_preview_dialog_controller.cc
|
| diff --git a/chrome/browser/printing/print_preview_dialog_controller.cc b/chrome/browser/printing/print_preview_dialog_controller.cc
|
| index 8d1ff323b34b1a93da58825286dfdbd45314218c..01f5be0160f9b12280ab8c00b2802fc41a76f028 100644
|
| --- a/chrome/browser/printing/print_preview_dialog_controller.cc
|
| +++ b/chrome/browser/printing/print_preview_dialog_controller.cc
|
| @@ -184,6 +184,15 @@ WebContents* PrintPreviewDialogController::GetOrCreatePreviewDialog(
|
|
|
| WebContents* PrintPreviewDialogController::GetPrintPreviewForContents(
|
| WebContents* contents) const {
|
| +
|
| + // If this WebContents relies on another for its preview dialog, we
|
| + // need to act as if we are looking for the proxied content's dialog.
|
| + PrintPreviewDialogMap::const_iterator proxied =
|
| + proxied_dialog_map_.find(contents);
|
| + if (proxied != proxied_dialog_map_.end()) {
|
| + contents = const_cast<WebContents*>(proxied->second);
|
| + }
|
| +
|
| // |preview_dialog_map_| is keyed by the preview dialog, so if find()
|
| // succeeds, then |contents| is the preview dialog.
|
| PrintPreviewDialogMap::const_iterator it = preview_dialog_map_.find(contents);
|
| @@ -376,6 +385,16 @@ WebContents* PrintPreviewDialogController::CreatePrintPreviewDialog(
|
| return preview_dialog;
|
| }
|
|
|
| +void PrintPreviewDialogController::AddProxyDialogForWebContents(
|
| + WebContents* source, WebContents* target) {
|
| + proxied_dialog_map_[source] = target;
|
| +}
|
| +
|
| +void PrintPreviewDialogController::RemoveProxyDialogForWebContents(
|
| + WebContents* source) {
|
| + proxied_dialog_map_.erase(source);
|
| +}
|
| +
|
| void PrintPreviewDialogController::SaveInitiatorTitle(
|
| WebContents* preview_dialog) {
|
| WebContents* initiator = GetInitiator(preview_dialog);
|
|
|