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

Side by Side Diff: chrome/browser/printing/print_preview_dialog_controller.cc

Issue 2215063002: Fix Print Preview Alt + Left Arrow breakage (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Two possible tests to fix mac flakes Created 4 years, 4 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/printing/print_preview_dialog_controller.h" 5 #include "chrome/browser/printing/print_preview_dialog_controller.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <string> 10 #include <string>
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 return; 344 return;
345 } 345 }
346 } 346 }
347 NOTREACHED(); 347 NOTREACHED();
348 return; 348 return;
349 } 349 }
350 if (details) { 350 if (details) {
351 ui::PageTransition type = details->entry->GetTransitionType(); 351 ui::PageTransition type = details->entry->GetTransitionType();
352 content::NavigationType nav_type = details->type; 352 content::NavigationType nav_type = details->type;
353 if (nav_type == content::NAVIGATION_TYPE_EXISTING_PAGE && 353 if (nav_type == content::NAVIGATION_TYPE_EXISTING_PAGE &&
354 (ui::PageTransitionCoreTypeIs(type, ui::PAGE_TRANSITION_TYPED) || 354 (ui::PageTransitionTypeIncludingQualifiersIs(
355 ui::PageTransitionCoreTypeIs(type, ui::PAGE_TRANSITION_LINK))) 355 type,
356 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED |
357 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR)) ||
358 ui::PageTransitionTypeIncludingQualifiersIs(type,
359 ui::PAGE_TRANSITION_LINK)))
356 return; 360 return;
357 } 361 }
358 362
359 RemoveInitiator(contents); 363 RemoveInitiator(contents);
360 } 364 }
361 365
362 WebContents* PrintPreviewDialogController::CreatePrintPreviewDialog( 366 WebContents* PrintPreviewDialogController::CreatePrintPreviewDialog(
363 WebContents* initiator) { 367 WebContents* initiator) {
364 base::AutoReset<bool> auto_reset(&is_creating_print_preview_dialog_, true); 368 base::AutoReset<bool> auto_reset(&is_creating_print_preview_dialog_, true);
365 369
(...skipping 17 matching lines...) Expand all
383 387
384 // Add an entry to the map. 388 // Add an entry to the map.
385 preview_dialog_map_[preview_dialog] = initiator; 389 preview_dialog_map_[preview_dialog] = initiator;
386 waiting_for_new_preview_page_ = true; 390 waiting_for_new_preview_page_ = true;
387 391
388 // Make the print preview WebContents show up in the task manager. 392 // Make the print preview WebContents show up in the task manager.
389 task_manager::WebContentsTags::CreateForPrintingContents(preview_dialog); 393 task_manager::WebContentsTags::CreateForPrintingContents(preview_dialog);
390 394
391 AddObservers(initiator); 395 AddObservers(initiator);
392 AddObservers(preview_dialog); 396 AddObservers(preview_dialog);
393
394 return preview_dialog; 397 return preview_dialog;
395 } 398 }
396 399
397 void PrintPreviewDialogController::SaveInitiatorTitle( 400 void PrintPreviewDialogController::SaveInitiatorTitle(
398 WebContents* preview_dialog) { 401 WebContents* preview_dialog) {
399 WebContents* initiator = GetInitiator(preview_dialog); 402 WebContents* initiator = GetInitiator(preview_dialog);
400 if (initiator && preview_dialog->GetWebUI()) { 403 if (initiator && preview_dialog->GetWebUI()) {
401 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( 404 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(
402 preview_dialog->GetWebUI()->GetController()); 405 preview_dialog->GetWebUI()->GetController());
403 print_preview_ui->SetInitiatorTitle( 406 print_preview_ui->SetInitiatorTitle(
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 444
442 void PrintPreviewDialogController::RemoveInitiator( 445 void PrintPreviewDialogController::RemoveInitiator(
443 WebContents* initiator) { 446 WebContents* initiator) {
444 WebContents* preview_dialog = GetPrintPreviewForContents(initiator); 447 WebContents* preview_dialog = GetPrintPreviewForContents(initiator);
445 DCHECK(preview_dialog); 448 DCHECK(preview_dialog);
446 // Update the map entry first, so when the print preview dialog gets destroyed 449 // Update the map entry first, so when the print preview dialog gets destroyed
447 // and reaches RemovePreviewDialog(), it does not attempt to also remove the 450 // and reaches RemovePreviewDialog(), it does not attempt to also remove the
448 // initiator's observers. 451 // initiator's observers.
449 preview_dialog_map_[preview_dialog] = nullptr; 452 preview_dialog_map_[preview_dialog] = nullptr;
450 RemoveObservers(initiator); 453 RemoveObservers(initiator);
451
452 PrintViewManager::FromWebContents(initiator)->PrintPreviewDone(); 454 PrintViewManager::FromWebContents(initiator)->PrintPreviewDone();
453
454 // initiator is closed. Close the print preview dialog too. 455 // initiator is closed. Close the print preview dialog too.
455 if (content::WebUI* web_ui = preview_dialog->GetWebUI()) { 456 if (content::WebUI* web_ui = preview_dialog->GetWebUI()) {
456 PrintPreviewUI* print_preview_ui = 457 PrintPreviewUI* print_preview_ui =
457 static_cast<PrintPreviewUI*>(web_ui->GetController()); 458 static_cast<PrintPreviewUI*>(web_ui->GetController());
458 if (print_preview_ui) 459 if (print_preview_ui)
459 print_preview_ui->OnInitiatorClosed(); 460 print_preview_ui->OnInitiatorClosed();
460 } 461 }
461 } 462 }
462 463
463 void PrintPreviewDialogController::RemovePreviewDialog( 464 void PrintPreviewDialogController::RemovePreviewDialog(
464 WebContents* preview_dialog) { 465 WebContents* preview_dialog) {
465 // Remove the initiator's observers before erasing the mapping. 466 // Remove the initiator's observers before erasing the mapping.
466 WebContents* initiator = GetInitiator(preview_dialog); 467 WebContents* initiator = GetInitiator(preview_dialog);
467 if (initiator) { 468 if (initiator) {
468 RemoveObservers(initiator); 469 RemoveObservers(initiator);
469 PrintViewManager::FromWebContents(initiator)->PrintPreviewDone(); 470 PrintViewManager::FromWebContents(initiator)->PrintPreviewDone();
470 } 471 }
471 472
472 preview_dialog_map_.erase(preview_dialog); 473 preview_dialog_map_.erase(preview_dialog);
473 RemoveObservers(preview_dialog); 474 RemoveObservers(preview_dialog);
474 } 475 }
475 476
476 } // namespace printing 477 } // namespace printing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698