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/external_tab_container_win.h" | 5 #include "chrome/browser/external_tab_container_win.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
10 #include "base/i18n/rtl.h" | 10 #include "base/i18n/rtl.h" |
(...skipping 14 matching lines...) Expand all Loading... |
25 #include "chrome/browser/ui/browser_window.h" | 25 #include "chrome/browser/ui/browser_window.h" |
26 #include "chrome/browser/ui/download/download_tab_helper.h" | 26 #include "chrome/browser/ui/download/download_tab_helper.h" |
27 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 27 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
28 #include "chrome/browser/ui/views/browser_dialogs.h" | 28 #include "chrome/browser/ui/views/browser_dialogs.h" |
29 #include "chrome/browser/ui/views/infobars/infobar_container_view.h" | 29 #include "chrome/browser/ui/views/infobars/infobar_container_view.h" |
30 #include "chrome/browser/ui/views/page_info_bubble_view.h" | 30 #include "chrome/browser/ui/views/page_info_bubble_view.h" |
31 #include "chrome/browser/ui/views/tab_contents/render_view_context_menu_views.h" | 31 #include "chrome/browser/ui/views/tab_contents/render_view_context_menu_views.h" |
32 #include "chrome/browser/ui/views/tab_contents/tab_contents_container.h" | 32 #include "chrome/browser/ui/views/tab_contents/tab_contents_container.h" |
33 #include "chrome/common/automation_messages.h" | 33 #include "chrome/common/automation_messages.h" |
34 #include "chrome/common/chrome_constants.h" | 34 #include "chrome/common/chrome_constants.h" |
| 35 #include "chrome/common/chrome_notification_types.h" |
35 #include "chrome/common/render_messages.h" | 36 #include "chrome/common/render_messages.h" |
36 #include "chrome/common/url_constants.h" | 37 #include "chrome/common/url_constants.h" |
37 #include "content/browser/debugger/devtools_toggle_action.h" | 38 #include "content/browser/debugger/devtools_toggle_action.h" |
38 #include "content/browser/debugger/devtools_window.h" | 39 #include "content/browser/debugger/devtools_window.h" |
39 #include "content/browser/load_notification_details.h" | 40 #include "content/browser/load_notification_details.h" |
40 #include "content/browser/renderer_host/render_process_host.h" | 41 #include "content/browser/renderer_host/render_process_host.h" |
41 #include "content/browser/renderer_host/render_view_host.h" | 42 #include "content/browser/renderer_host/render_view_host.h" |
42 #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h" | 43 #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h" |
43 #include "content/browser/tab_contents/navigation_details.h" | 44 #include "content/browser/tab_contents/navigation_details.h" |
44 #include "content/browser/tab_contents/provisional_load_details.h" | 45 #include "content/browser/tab_contents/provisional_load_details.h" |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 tab_contents_->tab_contents()-> | 171 tab_contents_->tab_contents()-> |
171 GetMutableRendererPrefs()->browser_handles_top_level_requests = | 172 GetMutableRendererPrefs()->browser_handles_top_level_requests = |
172 handle_top_level_requests; | 173 handle_top_level_requests; |
173 | 174 |
174 if (!existing_contents) { | 175 if (!existing_contents) { |
175 tab_contents_->render_view_host()->AllowBindings( | 176 tab_contents_->render_view_host()->AllowBindings( |
176 BindingsPolicy::EXTERNAL_HOST); | 177 BindingsPolicy::EXTERNAL_HOST); |
177 } | 178 } |
178 | 179 |
179 NavigationController* controller = &tab_contents_->controller(); | 180 NavigationController* controller = &tab_contents_->controller(); |
180 registrar_.Add(this, NotificationType::NAV_ENTRY_COMMITTED, | 181 registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
181 Source<NavigationController>(controller)); | 182 Source<NavigationController>(controller)); |
182 registrar_.Add(this, NotificationType::FAIL_PROVISIONAL_LOAD_WITH_ERROR, | 183 registrar_.Add(this, content::NOTIFICATION_FAIL_PROVISIONAL_LOAD_WITH_ERROR, |
183 Source<NavigationController>(controller)); | 184 Source<NavigationController>(controller)); |
184 registrar_.Add(this, NotificationType::LOAD_STOP, | 185 registrar_.Add(this, content::NOTIFICATION_LOAD_STOP, |
185 Source<NavigationController>(controller)); | 186 Source<NavigationController>(controller)); |
186 registrar_.Add(this, NotificationType::RENDER_VIEW_HOST_CREATED_FOR_TAB, | 187 registrar_.Add(this, content::NOTIFICATION_RENDER_VIEW_HOST_CREATED_FOR_TAB, |
187 Source<TabContents>(tab_contents_->tab_contents())); | 188 Source<TabContents>(tab_contents_->tab_contents())); |
188 registrar_.Add(this, NotificationType::RENDER_VIEW_HOST_DELETED, | 189 registrar_.Add(this, content::NOTIFICATION_RENDER_VIEW_HOST_DELETED, |
189 NotificationService::AllSources()); | 190 NotificationService::AllSources()); |
190 | 191 |
191 NotificationService::current()->Notify( | 192 NotificationService::current()->Notify( |
192 NotificationType::EXTERNAL_TAB_CREATED, | 193 chrome::NOTIFICATION_EXTERNAL_TAB_CREATED, |
193 Source<NavigationController>(controller), | 194 Source<NavigationController>(controller), |
194 NotificationService::NoDetails()); | 195 NotificationService::NoDetails()); |
195 | 196 |
196 TabContentsObserver::Observe(tab_contents_->tab_contents()); | 197 TabContentsObserver::Observe(tab_contents_->tab_contents()); |
197 | 198 |
198 // Start loading initial URL | 199 // Start loading initial URL |
199 if (!initial_url.is_empty()) { | 200 if (!initial_url.is_empty()) { |
200 // Navigate out of context since we don't have a 'tab_handle_' yet. | 201 // Navigate out of context since we don't have a 'tab_handle_' yet. |
201 MessageLoop::current()->PostTask( | 202 MessageLoop::current()->PostTask( |
202 FROM_HERE, | 203 FROM_HERE, |
(...skipping 23 matching lines...) Expand all Loading... |
226 | 227 |
227 void ExternalTabContainer::Uninitialize() { | 228 void ExternalTabContainer::Uninitialize() { |
228 registrar_.RemoveAll(); | 229 registrar_.RemoveAll(); |
229 if (tab_contents_.get()) { | 230 if (tab_contents_.get()) { |
230 UnregisterRenderViewHost(tab_contents_->render_view_host()); | 231 UnregisterRenderViewHost(tab_contents_->render_view_host()); |
231 | 232 |
232 if (GetWidget()->GetRootView()) | 233 if (GetWidget()->GetRootView()) |
233 GetWidget()->GetRootView()->RemoveAllChildViews(true); | 234 GetWidget()->GetRootView()->RemoveAllChildViews(true); |
234 | 235 |
235 NotificationService::current()->Notify( | 236 NotificationService::current()->Notify( |
236 NotificationType::EXTERNAL_TAB_CLOSED, | 237 chrome::NOTIFICATION_EXTERNAL_TAB_CLOSED, |
237 Source<NavigationController>(&tab_contents_->controller()), | 238 Source<NavigationController>(&tab_contents_->controller()), |
238 Details<ExternalTabContainer>(this)); | 239 Details<ExternalTabContainer>(this)); |
239 | 240 |
240 tab_contents_.reset(NULL); | 241 tab_contents_.reset(NULL); |
241 } | 242 } |
242 | 243 |
243 if (focus_manager_) { | 244 if (focus_manager_) { |
244 focus_manager_->UnregisterAccelerators(this); | 245 focus_manager_->UnregisterAccelerators(this); |
245 focus_manager_ = NULL; | 246 focus_manager_ = NULL; |
246 } | 247 } |
(...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
694 const std::string& target) { | 695 const std::string& target) { |
695 if (automation_) { | 696 if (automation_) { |
696 automation_->Send(new AutomationMsg_ForwardMessageToExternalHost( | 697 automation_->Send(new AutomationMsg_ForwardMessageToExternalHost( |
697 tab_handle_, message, origin, target)); | 698 tab_handle_, message, origin, target)); |
698 } | 699 } |
699 } | 700 } |
700 | 701 |
701 //////////////////////////////////////////////////////////////////////////////// | 702 //////////////////////////////////////////////////////////////////////////////// |
702 // ExternalTabContainer, NotificationObserver implementation: | 703 // ExternalTabContainer, NotificationObserver implementation: |
703 | 704 |
704 void ExternalTabContainer::Observe(NotificationType type, | 705 void ExternalTabContainer::Observe(int type, |
705 const NotificationSource& source, | 706 const NotificationSource& source, |
706 const NotificationDetails& details) { | 707 const NotificationDetails& details) { |
707 if (!automation_) | 708 if (!automation_) |
708 return; | 709 return; |
709 | 710 |
710 static const int kHttpClientErrorStart = 400; | 711 static const int kHttpClientErrorStart = 400; |
711 static const int kHttpServerErrorEnd = 510; | 712 static const int kHttpServerErrorEnd = 510; |
712 | 713 |
713 switch (type.value) { | 714 switch (type) { |
714 case NotificationType::LOAD_STOP: { | 715 case content::NOTIFICATION_LOAD_STOP: { |
715 const LoadNotificationDetails* load = | 716 const LoadNotificationDetails* load = |
716 Details<LoadNotificationDetails>(details).ptr(); | 717 Details<LoadNotificationDetails>(details).ptr(); |
717 if (load != NULL && PageTransition::IsMainFrame(load->origin())) { | 718 if (load != NULL && PageTransition::IsMainFrame(load->origin())) { |
718 TRACE_EVENT_END_ETW("ExternalTabContainer::Navigate", 0, | 719 TRACE_EVENT_END_ETW("ExternalTabContainer::Navigate", 0, |
719 load->url().spec()); | 720 load->url().spec()); |
720 automation_->Send(new AutomationMsg_TabLoaded(tab_handle_, | 721 automation_->Send(new AutomationMsg_TabLoaded(tab_handle_, |
721 load->url())); | 722 load->url())); |
722 } | 723 } |
723 break; | 724 break; |
724 } | 725 } |
725 case NotificationType::NAV_ENTRY_COMMITTED: { | 726 case content::NOTIFICATION_NAV_ENTRY_COMMITTED: { |
726 if (ignore_next_load_notification_) { | 727 if (ignore_next_load_notification_) { |
727 ignore_next_load_notification_ = false; | 728 ignore_next_load_notification_ = false; |
728 return; | 729 return; |
729 } | 730 } |
730 | 731 |
731 const content::LoadCommittedDetails* commit = | 732 const content::LoadCommittedDetails* commit = |
732 Details<content::LoadCommittedDetails>(details).ptr(); | 733 Details<content::LoadCommittedDetails>(details).ptr(); |
733 | 734 |
734 if (commit->http_status_code >= kHttpClientErrorStart && | 735 if (commit->http_status_code >= kHttpClientErrorStart && |
735 commit->http_status_code <= kHttpServerErrorEnd) { | 736 commit->http_status_code <= kHttpServerErrorEnd) { |
736 automation_->Send(new AutomationMsg_NavigationFailed( | 737 automation_->Send(new AutomationMsg_NavigationFailed( |
737 tab_handle_, commit->http_status_code, commit->entry->url())); | 738 tab_handle_, commit->http_status_code, commit->entry->url())); |
738 | 739 |
739 ignore_next_load_notification_ = true; | 740 ignore_next_load_notification_ = true; |
740 } else { | 741 } else { |
741 NavigationInfo navigation_info; | 742 NavigationInfo navigation_info; |
742 // When the previous entry index is invalid, it will be -1, which | 743 // When the previous entry index is invalid, it will be -1, which |
743 // will still make the computation come out right (navigating to the | 744 // will still make the computation come out right (navigating to the |
744 // 0th entry will be +1). | 745 // 0th entry will be +1). |
745 if (InitNavigationInfo(&navigation_info, commit->type, | 746 if (InitNavigationInfo(&navigation_info, commit->type, |
746 commit->previous_entry_index - | 747 commit->previous_entry_index - |
747 tab_contents_->controller().last_committed_entry_index())) | 748 tab_contents_->controller().last_committed_entry_index())) |
748 automation_->Send(new AutomationMsg_DidNavigate(tab_handle_, | 749 automation_->Send(new AutomationMsg_DidNavigate(tab_handle_, |
749 navigation_info)); | 750 navigation_info)); |
750 } | 751 } |
751 break; | 752 break; |
752 } | 753 } |
753 case NotificationType::FAIL_PROVISIONAL_LOAD_WITH_ERROR: { | 754 case content::NOTIFICATION_FAIL_PROVISIONAL_LOAD_WITH_ERROR: { |
754 const ProvisionalLoadDetails* load_details = | 755 const ProvisionalLoadDetails* load_details = |
755 Details<ProvisionalLoadDetails>(details).ptr(); | 756 Details<ProvisionalLoadDetails>(details).ptr(); |
756 automation_->Send(new AutomationMsg_NavigationFailed( | 757 automation_->Send(new AutomationMsg_NavigationFailed( |
757 tab_handle_, load_details->error_code(), load_details->url())); | 758 tab_handle_, load_details->error_code(), load_details->url())); |
758 | 759 |
759 ignore_next_load_notification_ = true; | 760 ignore_next_load_notification_ = true; |
760 break; | 761 break; |
761 } | 762 } |
762 case NotificationType::RENDER_VIEW_HOST_CREATED_FOR_TAB: { | 763 case content::NOTIFICATION_RENDER_VIEW_HOST_CREATED_FOR_TAB: { |
763 if (load_requests_via_automation_) { | 764 if (load_requests_via_automation_) { |
764 RenderViewHost* rvh = Details<RenderViewHost>(details).ptr(); | 765 RenderViewHost* rvh = Details<RenderViewHost>(details).ptr(); |
765 RegisterRenderViewHostForAutomation(rvh, false); | 766 RegisterRenderViewHostForAutomation(rvh, false); |
766 } | 767 } |
767 break; | 768 break; |
768 } | 769 } |
769 case NotificationType::RENDER_VIEW_HOST_DELETED: { | 770 case content::NOTIFICATION_RENDER_VIEW_HOST_DELETED: { |
770 if (load_requests_via_automation_) { | 771 if (load_requests_via_automation_) { |
771 RenderViewHost* rvh = Source<RenderViewHost>(source).ptr(); | 772 RenderViewHost* rvh = Source<RenderViewHost>(source).ptr(); |
772 UnregisterRenderViewHost(rvh); | 773 UnregisterRenderViewHost(rvh); |
773 } | 774 } |
774 break; | 775 break; |
775 } | 776 } |
776 default: | 777 default: |
777 NOTREACHED(); | 778 NOTREACHED(); |
778 } | 779 } |
779 } | 780 } |
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1122 | 1123 |
1123 if (disposition == CURRENT_TAB) { | 1124 if (disposition == CURRENT_TAB) { |
1124 DCHECK(route_all_top_level_navigations_); | 1125 DCHECK(route_all_top_level_navigations_); |
1125 disposition = NEW_FOREGROUND_TAB; | 1126 disposition = NEW_FOREGROUND_TAB; |
1126 } | 1127 } |
1127 ExternalTabContainer::OpenURLFromTab(source, url, referrer, disposition, | 1128 ExternalTabContainer::OpenURLFromTab(source, url, referrer, disposition, |
1128 transition); | 1129 transition); |
1129 // support only one navigation for a dummy tab before it is killed. | 1130 // support only one navigation for a dummy tab before it is killed. |
1130 ::DestroyWindow(GetNativeView()); | 1131 ::DestroyWindow(GetNativeView()); |
1131 } | 1132 } |
OLD | NEW |