| 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 27 matching lines...) Expand all Loading... |
| 38 #include "chrome/common/render_messages.h" | 38 #include "chrome/common/render_messages.h" |
| 39 #include "chrome/common/url_constants.h" | 39 #include "chrome/common/url_constants.h" |
| 40 #include "content/browser/load_notification_details.h" | 40 #include "content/browser/load_notification_details.h" |
| 41 #include "content/browser/renderer_host/render_process_host.h" | 41 #include "content/browser/renderer_host/render_process_host.h" |
| 42 #include "content/browser/renderer_host/render_view_host.h" | 42 #include "content/browser/renderer_host/render_view_host.h" |
| 43 #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h" | 43 #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h" |
| 44 #include "content/browser/tab_contents/navigation_details.h" | 44 #include "content/browser/tab_contents/navigation_details.h" |
| 45 #include "content/browser/tab_contents/provisional_load_details.h" | 45 #include "content/browser/tab_contents/provisional_load_details.h" |
| 46 #include "content/common/native_web_keyboard_event.h" | 46 #include "content/common/native_web_keyboard_event.h" |
| 47 #include "content/common/notification_service.h" | 47 #include "content/common/notification_service.h" |
| 48 #include "content/common/page_transition_types.h" | |
| 49 #include "content/common/page_zoom.h" | 48 #include "content/common/page_zoom.h" |
| 50 #include "content/common/view_messages.h" | 49 #include "content/common/view_messages.h" |
| 51 #include "content/public/common/bindings_policy.h" | 50 #include "content/public/common/bindings_policy.h" |
| 51 #include "content/public/common/page_transition_types.h" |
| 52 #include "grit/generated_resources.h" | 52 #include "grit/generated_resources.h" |
| 53 #include "grit/locale_settings.h" | 53 #include "grit/locale_settings.h" |
| 54 #include "ui/base/l10n/l10n_util.h" | 54 #include "ui/base/l10n/l10n_util.h" |
| 55 #include "ui/base/resource/resource_bundle.h" | 55 #include "ui/base/resource/resource_bundle.h" |
| 56 #include "ui/base/view_prop.h" | 56 #include "ui/base/view_prop.h" |
| 57 #include "ui/base/models/menu_model.h" | 57 #include "ui/base/models/menu_model.h" |
| 58 #include "views/layout/grid_layout.h" | 58 #include "views/layout/grid_layout.h" |
| 59 | 59 |
| 60 using ui::ViewProp; | 60 using ui::ViewProp; |
| 61 | 61 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 DVLOG(1) << __FUNCTION__; | 106 DVLOG(1) << __FUNCTION__; |
| 107 } | 107 } |
| 108 virtual ~ExternalTabPageInfoBubbleView() { | 108 virtual ~ExternalTabPageInfoBubbleView() { |
| 109 DVLOG(1) << __FUNCTION__; | 109 DVLOG(1) << __FUNCTION__; |
| 110 } | 110 } |
| 111 // LinkListener methods: | 111 // LinkListener methods: |
| 112 virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE { | 112 virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE { |
| 113 GURL url = google_util::AppendGoogleLocaleParam( | 113 GURL url = google_util::AppendGoogleLocaleParam( |
| 114 GURL(chrome::kPageInfoHelpCenterURL)); | 114 GURL(chrome::kPageInfoHelpCenterURL)); |
| 115 container_->OpenURLFromTab(container_->tab_contents(), url, GURL(), | 115 container_->OpenURLFromTab(container_->tab_contents(), url, GURL(), |
| 116 NEW_FOREGROUND_TAB, PageTransition::LINK); | 116 NEW_FOREGROUND_TAB, |
| 117 content::PAGE_TRANSITION_LINK); |
| 117 } | 118 } |
| 118 private: | 119 private: |
| 119 scoped_refptr<ExternalTabContainer> container_; | 120 scoped_refptr<ExternalTabContainer> container_; |
| 120 }; | 121 }; |
| 121 | 122 |
| 122 base::LazyInstance<ExternalTabContainer::PendingTabs> | 123 base::LazyInstance<ExternalTabContainer::PendingTabs> |
| 123 ExternalTabContainer::pending_tabs_(base::LINKER_INITIALIZED); | 124 ExternalTabContainer::pending_tabs_(base::LINKER_INITIALIZED); |
| 124 | 125 |
| 125 ExternalTabContainer::ExternalTabContainer( | 126 ExternalTabContainer::ExternalTabContainer( |
| 126 AutomationProvider* automation, AutomationResourceMessageFilter* filter) | 127 AutomationProvider* automation, AutomationResourceMessageFilter* filter) |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 } | 358 } |
| 358 //////////////////////////////////////////////////////////////////////////////// | 359 //////////////////////////////////////////////////////////////////////////////// |
| 359 // ExternalTabContainer, TabContentsDelegate implementation: | 360 // ExternalTabContainer, TabContentsDelegate implementation: |
| 360 | 361 |
| 361 // TODO(adriansc): Remove this method once refactoring changed all call sites. | 362 // TODO(adriansc): Remove this method once refactoring changed all call sites. |
| 362 TabContents* ExternalTabContainer::OpenURLFromTab( | 363 TabContents* ExternalTabContainer::OpenURLFromTab( |
| 363 TabContents* source, | 364 TabContents* source, |
| 364 const GURL& url, | 365 const GURL& url, |
| 365 const GURL& referrer, | 366 const GURL& referrer, |
| 366 WindowOpenDisposition disposition, | 367 WindowOpenDisposition disposition, |
| 367 PageTransition::Type transition) { | 368 content::PageTransition transition) { |
| 368 return OpenURLFromTab(source, | 369 return OpenURLFromTab(source, |
| 369 OpenURLParams(url, referrer, disposition, transition)); | 370 OpenURLParams(url, referrer, disposition, transition)); |
| 370 } | 371 } |
| 371 | 372 |
| 372 TabContents* ExternalTabContainer::OpenURLFromTab(TabContents* source, | 373 TabContents* ExternalTabContainer::OpenURLFromTab(TabContents* source, |
| 373 const OpenURLParams& params) { | 374 const OpenURLParams& params) { |
| 374 if (pending()) { | 375 if (pending()) { |
| 375 pending_open_url_requests_.push_back(params); | 376 pending_open_url_requests_.push_back(params); |
| 376 return NULL; | 377 return NULL; |
| 377 } | 378 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 390 params.referrer, | 391 params.referrer, |
| 391 params.disposition)); | 392 params.disposition)); |
| 392 // TODO(ananta) | 393 // TODO(ananta) |
| 393 // We should populate other fields in the | 394 // We should populate other fields in the |
| 394 // ViewHostMsg_FrameNavigate_Params structure. Another option could be | 395 // ViewHostMsg_FrameNavigate_Params structure. Another option could be |
| 395 // to refactor the UpdateHistoryForNavigation function in TabContents. | 396 // to refactor the UpdateHistoryForNavigation function in TabContents. |
| 396 ViewHostMsg_FrameNavigate_Params nav_params; | 397 ViewHostMsg_FrameNavigate_Params nav_params; |
| 397 nav_params.referrer = params.referrer; | 398 nav_params.referrer = params.referrer; |
| 398 nav_params.url = params.url; | 399 nav_params.url = params.url; |
| 399 nav_params.page_id = -1; | 400 nav_params.page_id = -1; |
| 400 nav_params.transition = PageTransition::LINK; | 401 nav_params.transition = content::PAGE_TRANSITION_LINK; |
| 401 | 402 |
| 402 content::LoadCommittedDetails details; | 403 content::LoadCommittedDetails details; |
| 403 details.did_replace_entry = false; | 404 details.did_replace_entry = false; |
| 404 | 405 |
| 405 scoped_refptr<history::HistoryAddPageArgs> add_page_args( | 406 scoped_refptr<history::HistoryAddPageArgs> add_page_args( |
| 406 tab_contents_->history_tab_helper()-> | 407 tab_contents_->history_tab_helper()-> |
| 407 CreateHistoryAddPageArgs(params.url, details, nav_params)); | 408 CreateHistoryAddPageArgs(params.url, details, nav_params)); |
| 408 tab_contents_->history_tab_helper()-> | 409 tab_contents_->history_tab_helper()-> |
| 409 UpdateHistoryForNavigation(add_page_args); | 410 UpdateHistoryForNavigation(add_page_args); |
| 410 | 411 |
| (...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 820 if (!automation_) | 821 if (!automation_) |
| 821 return; | 822 return; |
| 822 | 823 |
| 823 static const int kHttpClientErrorStart = 400; | 824 static const int kHttpClientErrorStart = 400; |
| 824 static const int kHttpServerErrorEnd = 510; | 825 static const int kHttpServerErrorEnd = 510; |
| 825 | 826 |
| 826 switch (type) { | 827 switch (type) { |
| 827 case content::NOTIFICATION_LOAD_STOP: { | 828 case content::NOTIFICATION_LOAD_STOP: { |
| 828 const LoadNotificationDetails* load = | 829 const LoadNotificationDetails* load = |
| 829 Details<LoadNotificationDetails>(details).ptr(); | 830 Details<LoadNotificationDetails>(details).ptr(); |
| 830 if (load != NULL && PageTransition::IsMainFrame(load->origin())) { | 831 if (load != NULL && |
| 832 content::PageTransitionIsMainFrame(load->origin())) { |
| 831 TRACE_EVENT_END_ETW("ExternalTabContainer::Navigate", 0, | 833 TRACE_EVENT_END_ETW("ExternalTabContainer::Navigate", 0, |
| 832 load->url().spec()); | 834 load->url().spec()); |
| 833 automation_->Send(new AutomationMsg_TabLoaded(tab_handle_, | 835 automation_->Send(new AutomationMsg_TabLoaded(tab_handle_, |
| 834 load->url())); | 836 load->url())); |
| 835 } | 837 } |
| 836 break; | 838 break; |
| 837 } | 839 } |
| 838 case content::NOTIFICATION_NAV_ENTRY_COMMITTED: { | 840 case content::NOTIFICATION_NAV_ENTRY_COMMITTED: { |
| 839 if (ignore_next_load_notification_) { | 841 if (ignore_next_load_notification_) { |
| 840 ignore_next_load_notification_ = false; | 842 ignore_next_load_notification_ = false; |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1067 | 1069 |
| 1068 void ExternalTabContainer::Navigate(const GURL& url, const GURL& referrer) { | 1070 void ExternalTabContainer::Navigate(const GURL& url, const GURL& referrer) { |
| 1069 if (!tab_contents_.get()) { | 1071 if (!tab_contents_.get()) { |
| 1070 NOTREACHED(); | 1072 NOTREACHED(); |
| 1071 return; | 1073 return; |
| 1072 } | 1074 } |
| 1073 | 1075 |
| 1074 TRACE_EVENT_BEGIN_ETW("ExternalTabContainer::Navigate", 0, url.spec()); | 1076 TRACE_EVENT_BEGIN_ETW("ExternalTabContainer::Navigate", 0, url.spec()); |
| 1075 | 1077 |
| 1076 tab_contents_->controller().LoadURL(url, referrer, | 1078 tab_contents_->controller().LoadURL(url, referrer, |
| 1077 PageTransition::START_PAGE, | 1079 content::PAGE_TRANSITION_START_PAGE, |
| 1078 std::string()); | 1080 std::string()); |
| 1079 } | 1081 } |
| 1080 | 1082 |
| 1081 bool ExternalTabContainer::OnGoToEntryOffset(int offset) { | 1083 bool ExternalTabContainer::OnGoToEntryOffset(int offset) { |
| 1082 if (load_requests_via_automation_) { | 1084 if (load_requests_via_automation_) { |
| 1083 automation_->Send(new AutomationMsg_RequestGoToHistoryEntryOffset( | 1085 automation_->Send(new AutomationMsg_RequestGoToHistoryEntryOffset( |
| 1084 tab_handle_, offset)); | 1086 tab_handle_, offset)); |
| 1085 return false; | 1087 return false; |
| 1086 } | 1088 } |
| 1087 | 1089 |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1189 AutomationResourceMessageFilter* filter) | 1191 AutomationResourceMessageFilter* filter) |
| 1190 : ExternalTabContainer(automation, filter) { | 1192 : ExternalTabContainer(automation, filter) { |
| 1191 } | 1193 } |
| 1192 | 1194 |
| 1193 TemporaryPopupExternalTabContainer::~TemporaryPopupExternalTabContainer() { | 1195 TemporaryPopupExternalTabContainer::~TemporaryPopupExternalTabContainer() { |
| 1194 DVLOG(1) << __FUNCTION__; | 1196 DVLOG(1) << __FUNCTION__; |
| 1195 } | 1197 } |
| 1196 | 1198 |
| 1197 TabContents* TemporaryPopupExternalTabContainer::OpenURLFromTab( | 1199 TabContents* TemporaryPopupExternalTabContainer::OpenURLFromTab( |
| 1198 TabContents* source, const GURL& url, const GURL& referrer, | 1200 TabContents* source, const GURL& url, const GURL& referrer, |
| 1199 WindowOpenDisposition disposition, PageTransition::Type transition) { | 1201 WindowOpenDisposition disposition, content::PageTransition transition) { |
| 1200 return OpenURLFromTab(source, | 1202 return OpenURLFromTab(source, |
| 1201 OpenURLParams(url, referrer, disposition, transition)); | 1203 OpenURLParams(url, referrer, disposition, transition)); |
| 1202 } | 1204 } |
| 1203 | 1205 |
| 1204 TabContents* TemporaryPopupExternalTabContainer::OpenURLFromTab( | 1206 TabContents* TemporaryPopupExternalTabContainer::OpenURLFromTab( |
| 1205 TabContents* source, | 1207 TabContents* source, |
| 1206 const OpenURLParams& params) { | 1208 const OpenURLParams& params) { |
| 1207 if (!automation_) | 1209 if (!automation_) |
| 1208 return NULL; | 1210 return NULL; |
| 1209 | 1211 |
| 1210 OpenURLParams forward_params = params; | 1212 OpenURLParams forward_params = params; |
| 1211 if (params.disposition == CURRENT_TAB) { | 1213 if (params.disposition == CURRENT_TAB) { |
| 1212 DCHECK(route_all_top_level_navigations_); | 1214 DCHECK(route_all_top_level_navigations_); |
| 1213 forward_params.disposition = NEW_FOREGROUND_TAB; | 1215 forward_params.disposition = NEW_FOREGROUND_TAB; |
| 1214 } | 1216 } |
| 1215 TabContents* new_contents = | 1217 TabContents* new_contents = |
| 1216 ExternalTabContainer::OpenURLFromTab(source, forward_params); | 1218 ExternalTabContainer::OpenURLFromTab(source, forward_params); |
| 1217 // support only one navigation for a dummy tab before it is killed. | 1219 // support only one navigation for a dummy tab before it is killed. |
| 1218 ::DestroyWindow(GetNativeView()); | 1220 ::DestroyWindow(GetNativeView()); |
| 1219 return new_contents; | 1221 return new_contents; |
| 1220 } | 1222 } |
| OLD | NEW |