OLD | NEW |
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 "content/browser/browser_plugin/browser_plugin_guest.h" | 5 #include "content/browser/browser_plugin/browser_plugin_guest.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "content/browser/browser_plugin/browser_plugin_guest_helper.h" | 10 #include "content/browser/browser_plugin/browser_plugin_guest_helper.h" |
11 #include "content/browser/browser_plugin/browser_plugin_host_factory.h" | 11 #include "content/browser/browser_plugin/browser_plugin_host_factory.h" |
12 #include "content/browser/renderer_host/render_view_host_impl.h" | 12 #include "content/browser/renderer_host/render_view_host_impl.h" |
13 #include "content/browser/renderer_host/render_widget_host_impl.h" | 13 #include "content/browser/renderer_host/render_widget_host_impl.h" |
14 #include "content/browser/web_contents/web_contents_impl.h" | 14 #include "content/browser/web_contents/web_contents_impl.h" |
15 #include "content/common/browser_plugin_messages.h" | 15 #include "content/common/browser_plugin_messages.h" |
16 #include "content/common/view_messages.h" | 16 #include "content/common/view_messages.h" |
| 17 #include "content/public/browser/navigation_entry.h" |
17 #include "content/public/browser/notification_service.h" | 18 #include "content/public/browser/notification_service.h" |
18 #include "content/public/browser/notification_types.h" | 19 #include "content/public/browser/notification_types.h" |
19 #include "content/public/browser/render_process_host.h" | 20 #include "content/public/browser/render_process_host.h" |
20 #include "content/public/browser/render_widget_host_view.h" | 21 #include "content/public/browser/render_widget_host_view.h" |
21 #include "content/public/browser/resource_request_details.h" | 22 #include "content/public/browser/resource_request_details.h" |
22 #include "content/public/browser/user_metrics.h" | 23 #include "content/public/browser/user_metrics.h" |
23 #include "content/public/common/result_codes.h" | 24 #include "content/public/common/result_codes.h" |
24 #include "content/browser/browser_plugin/browser_plugin_host_factory.h" | 25 #include "content/browser/browser_plugin/browser_plugin_host_factory.h" |
25 #include "net/base/net_errors.h" | 26 #include "net/base/net_errors.h" |
26 #include "ui/surface/transport_dib.h" | 27 #include "ui/surface/transport_dib.h" |
(...skipping 21 matching lines...) Expand all Loading... |
48 pending_update_counter_(0), | 49 pending_update_counter_(0), |
49 guest_hang_timeout_( | 50 guest_hang_timeout_( |
50 base::TimeDelta::FromMilliseconds(kGuestHangTimeoutMs)) { | 51 base::TimeDelta::FromMilliseconds(kGuestHangTimeoutMs)) { |
51 DCHECK(web_contents); | 52 DCHECK(web_contents); |
52 // |render_view_host| manages the ownership of this BrowserPluginGuestHelper. | 53 // |render_view_host| manages the ownership of this BrowserPluginGuestHelper. |
53 new BrowserPluginGuestHelper(this, render_view_host); | 54 new BrowserPluginGuestHelper(this, render_view_host); |
54 | 55 |
55 notification_registrar_.Add( | 56 notification_registrar_.Add( |
56 this, content::NOTIFICATION_RESOURCE_RECEIVED_REDIRECT, | 57 this, content::NOTIFICATION_RESOURCE_RECEIVED_REDIRECT, |
57 content::Source<content::WebContents>(web_contents)); | 58 content::Source<content::WebContents>(web_contents)); |
| 59 notification_registrar_.Add( |
| 60 this, content::NOTIFICATION_WEB_CONTENTS_TITLE_UPDATED, |
| 61 content::Source<content::WebContents>(web_contents)); |
58 } | 62 } |
59 | 63 |
60 BrowserPluginGuest::~BrowserPluginGuest() { | 64 BrowserPluginGuest::~BrowserPluginGuest() { |
61 } | 65 } |
62 | 66 |
63 // static | 67 // static |
64 BrowserPluginGuest* BrowserPluginGuest::Create( | 68 BrowserPluginGuest* BrowserPluginGuest::Create( |
65 int instance_id, | 69 int instance_id, |
66 WebContentsImpl* web_contents, | 70 WebContentsImpl* web_contents, |
67 content::RenderViewHost* render_view_host) { | 71 content::RenderViewHost* render_view_host) { |
(...skipping 14 matching lines...) Expand all Loading... |
82 DCHECK_EQ(Source<WebContents>(source).ptr(), web_contents()); | 86 DCHECK_EQ(Source<WebContents>(source).ptr(), web_contents()); |
83 ResourceRedirectDetails* resource_redirect_details = | 87 ResourceRedirectDetails* resource_redirect_details = |
84 Details<ResourceRedirectDetails>(details).ptr(); | 88 Details<ResourceRedirectDetails>(details).ptr(); |
85 bool is_top_level = | 89 bool is_top_level = |
86 resource_redirect_details->resource_type == ResourceType::MAIN_FRAME; | 90 resource_redirect_details->resource_type == ResourceType::MAIN_FRAME; |
87 LoadRedirect(resource_redirect_details->url, | 91 LoadRedirect(resource_redirect_details->url, |
88 resource_redirect_details->new_url, | 92 resource_redirect_details->new_url, |
89 is_top_level); | 93 is_top_level); |
90 break; | 94 break; |
91 } | 95 } |
| 96 case NOTIFICATION_WEB_CONTENTS_TITLE_UPDATED: { |
| 97 DCHECK_EQ(Source<WebContents>(source).ptr(), web_contents()); |
| 98 std::pair<NavigationEntry*, bool>* title = |
| 99 Details<std::pair<NavigationEntry*, bool> >(details).ptr(); |
| 100 if (title->first) { |
| 101 string16 title_text = title->first->GetTitle(); |
| 102 TitleChanged(title_text); |
| 103 } |
| 104 break; |
| 105 } |
92 default: | 106 default: |
93 NOTREACHED() << "Unexpected notification sent."; | 107 NOTREACHED() << "Unexpected notification sent."; |
94 break; | 108 break; |
95 } | 109 } |
96 } | 110 } |
97 | 111 |
98 bool BrowserPluginGuest::ViewTakeFocus(bool reverse) { | 112 bool BrowserPluginGuest::ViewTakeFocus(bool reverse) { |
99 SendMessageToEmbedder( | 113 SendMessageToEmbedder( |
100 new BrowserPluginMsg_AdvanceFocus(instance_id(), reverse)); | 114 new BrowserPluginMsg_AdvanceFocus(instance_id(), reverse)); |
101 return true; | 115 return true; |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
360 | 374 |
361 void BrowserPluginGuest::LoadRedirect( | 375 void BrowserPluginGuest::LoadRedirect( |
362 const GURL& old_url, | 376 const GURL& old_url, |
363 const GURL& new_url, | 377 const GURL& new_url, |
364 bool is_top_level) { | 378 bool is_top_level) { |
365 SendMessageToEmbedder( | 379 SendMessageToEmbedder( |
366 new BrowserPluginMsg_LoadRedirect( | 380 new BrowserPluginMsg_LoadRedirect( |
367 instance_id(), old_url, new_url, is_top_level)); | 381 instance_id(), old_url, new_url, is_top_level)); |
368 } | 382 } |
369 | 383 |
| 384 void BrowserPluginGuest::TitleChanged(const string16& title) { |
| 385 SendMessageToEmbedder( |
| 386 new BrowserPluginMsg_TitleChanged(instance_id(), title)); |
| 387 } |
| 388 |
370 void BrowserPluginGuest::DidCommitProvisionalLoadForFrame( | 389 void BrowserPluginGuest::DidCommitProvisionalLoadForFrame( |
371 int64 frame_id, | 390 int64 frame_id, |
372 bool is_main_frame, | 391 bool is_main_frame, |
373 const GURL& url, | 392 const GURL& url, |
374 PageTransition transition_type, | 393 PageTransition transition_type, |
375 RenderViewHost* render_view_host) { | 394 RenderViewHost* render_view_host) { |
376 // Inform its embedder of the updated URL. | 395 // Inform its embedder of the updated URL. |
377 if (is_main_frame) { | 396 if (is_main_frame) { |
378 SendMessageToEmbedder( | 397 SendMessageToEmbedder( |
379 new BrowserPluginMsg_DidNavigate( | 398 new BrowserPluginMsg_DidNavigate( |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
413 break; | 432 break; |
414 } | 433 } |
415 } | 434 } |
416 | 435 |
417 void BrowserPluginGuest::SendMessageToEmbedder(IPC::Message* msg) { | 436 void BrowserPluginGuest::SendMessageToEmbedder(IPC::Message* msg) { |
418 DCHECK(embedder_render_process_host()); | 437 DCHECK(embedder_render_process_host()); |
419 embedder_render_process_host()->Send(msg); | 438 embedder_render_process_host()->Send(msg); |
420 } | 439 } |
421 | 440 |
422 } // namespace content | 441 } // namespace content |
OLD | NEW |