OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_tab_controller.h" | 5 #include "chrome/browser/printing/print_preview_tab_controller.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <memory> | 8 #include <memory> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 22 matching lines...) Expand all Loading... |
33 #include "content/public/browser/web_contents.h" | 33 #include "content/public/browser/web_contents.h" |
34 #include "content/public/browser/navigation_controller.h" | 34 #include "content/public/browser/navigation_controller.h" |
35 #include "content/public/browser/navigation_details.h" | 35 #include "content/public/browser/navigation_details.h" |
36 #include "content/public/browser/navigation_entry.h" | 36 #include "content/public/browser/navigation_entry.h" |
37 #include "content/public/browser/notification_details.h" | 37 #include "content/public/browser/notification_details.h" |
38 #include "content/public/browser/notification_source.h" | 38 #include "content/public/browser/notification_source.h" |
39 #include "content/public/browser/notification_types.h" | 39 #include "content/public/browser/notification_types.h" |
40 #include "content/public/browser/render_process_host.h" | 40 #include "content/public/browser/render_process_host.h" |
41 #include "webkit/plugins/webplugininfo.h" | 41 #include "webkit/plugins/webplugininfo.h" |
42 | 42 |
| 43 using content::NavigationController; |
43 using content::WebContents; | 44 using content::WebContents; |
44 using content::WebUIMessageHandler; | 45 using content::WebUIMessageHandler; |
45 | 46 |
46 namespace { | 47 namespace { |
47 | 48 |
48 void EnableInternalPDFPluginForTab(TabContentsWrapper* preview_tab) { | 49 void EnableInternalPDFPluginForTab(TabContentsWrapper* preview_tab) { |
49 // Always enable the internal PDF plugin for the print preview page. | 50 // Always enable the internal PDF plugin for the print preview page. |
50 ChromePluginServiceFilter::GetInstance()->OverridePluginForTab( | 51 ChromePluginServiceFilter::GetInstance()->OverridePluginForTab( |
51 preview_tab->web_contents()->GetRenderProcessHost()->GetID(), | 52 preview_tab->web_contents()->GetRenderProcessHost()->GetID(), |
52 preview_tab->web_contents()->GetRenderViewHost()->routing_id(), | 53 preview_tab->web_contents()->GetRenderViewHost()->routing_id(), |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 break; | 216 break; |
216 } | 217 } |
217 case content::NOTIFICATION_WEB_CONTENTS_DESTROYED: { | 218 case content::NOTIFICATION_WEB_CONTENTS_DESTROYED: { |
218 WebContents* tab = content::Source<WebContents>(source).ptr(); | 219 WebContents* tab = content::Source<WebContents>(source).ptr(); |
219 TabContentsWrapper* wrapper = | 220 TabContentsWrapper* wrapper = |
220 TabContentsWrapper::GetCurrentWrapperForContents(tab); | 221 TabContentsWrapper::GetCurrentWrapperForContents(tab); |
221 OnTabContentsDestroyed(wrapper); | 222 OnTabContentsDestroyed(wrapper); |
222 break; | 223 break; |
223 } | 224 } |
224 case content::NOTIFICATION_NAV_ENTRY_COMMITTED: { | 225 case content::NOTIFICATION_NAV_ENTRY_COMMITTED: { |
225 content::NavigationController* controller = | 226 NavigationController* controller = |
226 content::Source<content::NavigationController>(source).ptr(); | 227 content::Source<NavigationController>(source).ptr(); |
227 TabContentsWrapper* wrapper = | 228 TabContentsWrapper* wrapper = |
228 TabContentsWrapper::GetCurrentWrapperForContents( | 229 TabContentsWrapper::GetCurrentWrapperForContents( |
229 controller->GetWebContents()); | 230 controller->GetWebContents()); |
230 content::LoadCommittedDetails* load_details = | 231 content::LoadCommittedDetails* load_details = |
231 content::Details<content::LoadCommittedDetails>(details).ptr(); | 232 content::Details<content::LoadCommittedDetails>(details).ptr(); |
232 OnNavEntryCommitted(wrapper, load_details); | 233 OnNavEntryCommitted(wrapper, load_details); |
233 break; | 234 break; |
234 } | 235 } |
235 default: { | 236 default: { |
236 NOTREACHED(); | 237 NOTREACHED(); |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
409 initiator_tab->print_view_manager()->RenderSourceName()); | 410 initiator_tab->print_view_manager()->RenderSourceName()); |
410 } | 411 } |
411 } | 412 } |
412 | 413 |
413 void PrintPreviewTabController::AddObservers(TabContentsWrapper* tab) { | 414 void PrintPreviewTabController::AddObservers(TabContentsWrapper* tab) { |
414 WebContents* contents = tab->web_contents(); | 415 WebContents* contents = tab->web_contents(); |
415 registrar_.Add(this, content::NOTIFICATION_WEB_CONTENTS_DESTROYED, | 416 registrar_.Add(this, content::NOTIFICATION_WEB_CONTENTS_DESTROYED, |
416 content::Source<WebContents>(contents)); | 417 content::Source<WebContents>(contents)); |
417 registrar_.Add( | 418 registrar_.Add( |
418 this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, | 419 this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
419 content::Source<content::NavigationController>( | 420 content::Source<NavigationController>(&contents->GetController())); |
420 &contents->GetController())); | |
421 | 421 |
422 // Multiple sites may share the same RenderProcessHost, so check if this | 422 // Multiple sites may share the same RenderProcessHost, so check if this |
423 // notification has already been added. | 423 // notification has already been added. |
424 content::RenderProcessHost* rph = tab->web_contents()->GetRenderProcessHost(); | 424 content::RenderProcessHost* rph = tab->web_contents()->GetRenderProcessHost(); |
425 if (!registrar_.IsRegistered(this, | 425 if (!registrar_.IsRegistered(this, |
426 content::NOTIFICATION_RENDERER_PROCESS_CLOSED, | 426 content::NOTIFICATION_RENDERER_PROCESS_CLOSED, |
427 content::Source<content::RenderProcessHost>( | 427 content::Source<content::RenderProcessHost>( |
428 rph))) { | 428 rph))) { |
429 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED, | 429 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED, |
430 content::Source<content::RenderProcessHost>(rph)); | 430 content::Source<content::RenderProcessHost>(rph)); |
431 } | 431 } |
432 } | 432 } |
433 | 433 |
434 void PrintPreviewTabController::RemoveObservers(TabContentsWrapper* tab) { | 434 void PrintPreviewTabController::RemoveObservers(TabContentsWrapper* tab) { |
435 WebContents* contents = tab->web_contents(); | 435 WebContents* contents = tab->web_contents(); |
436 registrar_.Remove(this, content::NOTIFICATION_WEB_CONTENTS_DESTROYED, | 436 registrar_.Remove(this, content::NOTIFICATION_WEB_CONTENTS_DESTROYED, |
437 content::Source<WebContents>(contents)); | 437 content::Source<WebContents>(contents)); |
438 registrar_.Remove( | 438 registrar_.Remove( |
439 this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, | 439 this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
440 content::Source<content::NavigationController>( | 440 content::Source<NavigationController>(&contents->GetController())); |
441 &contents->GetController())); | |
442 | 441 |
443 // Multiple sites may share the same RenderProcessHost, so check if this | 442 // Multiple sites may share the same RenderProcessHost, so check if this |
444 // notification has already been added. | 443 // notification has already been added. |
445 content::RenderProcessHost* rph = tab->web_contents()->GetRenderProcessHost(); | 444 content::RenderProcessHost* rph = tab->web_contents()->GetRenderProcessHost(); |
446 if (registrar_.IsRegistered(this, | 445 if (registrar_.IsRegistered(this, |
447 content::NOTIFICATION_RENDERER_PROCESS_CLOSED, | 446 content::NOTIFICATION_RENDERER_PROCESS_CLOSED, |
448 content::Source<content::RenderProcessHost>( | 447 content::Source<content::RenderProcessHost>( |
449 rph))) { | 448 rph))) { |
450 registrar_.Remove(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED, | 449 registrar_.Remove(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED, |
451 content::Source<content::RenderProcessHost>(rph)); | 450 content::Source<content::RenderProcessHost>(rph)); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
488 PrintPreviewUI* print_preview_ui = | 487 PrintPreviewUI* print_preview_ui = |
489 static_cast<PrintPreviewUI*>(preview_tab->web_contents()->GetWebUI()); | 488 static_cast<PrintPreviewUI*>(preview_tab->web_contents()->GetWebUI()); |
490 if (print_preview_ui) | 489 if (print_preview_ui) |
491 print_preview_ui->OnTabDestroyed(); | 490 print_preview_ui->OnTabDestroyed(); |
492 | 491 |
493 preview_tab_map_.erase(preview_tab); | 492 preview_tab_map_.erase(preview_tab); |
494 RemoveObservers(preview_tab); | 493 RemoveObservers(preview_tab); |
495 } | 494 } |
496 | 495 |
497 } // namespace printing | 496 } // namespace printing |
OLD | NEW |