| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/tab_contents/tab_contents.h" | 5 #include "chrome/browser/tab_contents/tab_contents.h" |
| 6 | 6 |
| 7 #if defined(OS_CHROMEOS) | 7 #if defined(OS_CHROMEOS) |
| 8 // For GdkScreen | 8 // For GdkScreen |
| 9 #include <gdk/gdk.h> | 9 #include <gdk/gdk.h> |
| 10 #endif // defined(OS_CHROMEOS) | 10 #endif // defined(OS_CHROMEOS) |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 #include "chrome/browser/renderer_preferences_util.h" | 65 #include "chrome/browser/renderer_preferences_util.h" |
| 66 #include "chrome/browser/search_engines/template_url_fetcher.h" | 66 #include "chrome/browser/search_engines/template_url_fetcher.h" |
| 67 #include "chrome/browser/search_engines/template_url_model.h" | 67 #include "chrome/browser/search_engines/template_url_model.h" |
| 68 #include "chrome/browser/sessions/session_types.h" | 68 #include "chrome/browser/sessions/session_types.h" |
| 69 #include "chrome/browser/tab_contents/infobar_delegate.h" | 69 #include "chrome/browser/tab_contents/infobar_delegate.h" |
| 70 #include "chrome/browser/tab_contents/interstitial_page.h" | 70 #include "chrome/browser/tab_contents/interstitial_page.h" |
| 71 #include "chrome/browser/tab_contents/match_preview.h" | 71 #include "chrome/browser/tab_contents/match_preview.h" |
| 72 #include "chrome/browser/tab_contents/navigation_entry.h" | 72 #include "chrome/browser/tab_contents/navigation_entry.h" |
| 73 #include "chrome/browser/tab_contents/provisional_load_details.h" | 73 #include "chrome/browser/tab_contents/provisional_load_details.h" |
| 74 #include "chrome/browser/tab_contents/tab_contents_delegate.h" | 74 #include "chrome/browser/tab_contents/tab_contents_delegate.h" |
| 75 #include "chrome/browser/tab_contents/tab_contents_file_select_helper.h" |
| 75 #include "chrome/browser/tab_contents/tab_contents_ssl_helper.h" | 76 #include "chrome/browser/tab_contents/tab_contents_ssl_helper.h" |
| 76 #include "chrome/browser/tab_contents/tab_contents_view.h" | 77 #include "chrome/browser/tab_contents/tab_contents_view.h" |
| 77 #include "chrome/browser/tab_contents/thumbnail_generator.h" | 78 #include "chrome/browser/tab_contents/thumbnail_generator.h" |
| 78 #include "chrome/browser/translate/page_translated_details.h" | 79 #include "chrome/browser/translate/page_translated_details.h" |
| 79 #include "chrome/common/bindings_policy.h" | 80 #include "chrome/common/bindings_policy.h" |
| 80 #include "chrome/common/chrome_switches.h" | 81 #include "chrome/common/chrome_switches.h" |
| 81 #include "chrome/common/extensions/extension.h" | 82 #include "chrome/common/extensions/extension.h" |
| 82 #include "chrome/common/extensions/extension_action.h" | 83 #include "chrome/common/extensions/extension_action.h" |
| 83 #include "chrome/common/extensions/extension_resource.h" | 84 #include "chrome/common/extensions/extension_resource.h" |
| 84 #include "chrome/common/extensions/url_pattern.h" | 85 #include "chrome/common/extensions/url_pattern.h" |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 registrar_(), | 319 registrar_(), |
| 319 ALLOW_THIS_IN_INITIALIZER_LIST(printing_( | 320 ALLOW_THIS_IN_INITIALIZER_LIST(printing_( |
| 320 new printing::PrintViewManager(*this))), | 321 new printing::PrintViewManager(*this))), |
| 321 save_package_(), | 322 save_package_(), |
| 322 autocomplete_history_manager_(), | 323 autocomplete_history_manager_(), |
| 323 autofill_manager_(), | 324 autofill_manager_(), |
| 324 password_manager_(), | 325 password_manager_(), |
| 325 plugin_installer_(), | 326 plugin_installer_(), |
| 326 bookmark_drag_(NULL), | 327 bookmark_drag_(NULL), |
| 327 ALLOW_THIS_IN_INITIALIZER_LIST(fav_icon_helper_(this)), | 328 ALLOW_THIS_IN_INITIALIZER_LIST(fav_icon_helper_(this)), |
| 328 select_file_dialog_(), | |
| 329 is_loading_(false), | 329 is_loading_(false), |
| 330 is_crashed_(false), | 330 is_crashed_(false), |
| 331 waiting_for_response_(false), | 331 waiting_for_response_(false), |
| 332 max_page_id_(-1), | 332 max_page_id_(-1), |
| 333 current_load_start_(), | 333 current_load_start_(), |
| 334 load_state_(net::LOAD_STATE_IDLE), | 334 load_state_(net::LOAD_STATE_IDLE), |
| 335 load_state_host_(), | 335 load_state_host_(), |
| 336 upload_size_(0), | 336 upload_size_(0), |
| 337 upload_position_(0), | 337 upload_position_(0), |
| 338 received_page_title_(false), | 338 received_page_title_(false), |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 447 // First cleanly close all child windows. | 447 // First cleanly close all child windows. |
| 448 // TODO(mpcomplete): handle case if MaybeCloseChildWindows() already asked | 448 // TODO(mpcomplete): handle case if MaybeCloseChildWindows() already asked |
| 449 // some of these to close. CloseWindows is async, so it might get called | 449 // some of these to close. CloseWindows is async, so it might get called |
| 450 // twice before it runs. | 450 // twice before it runs. |
| 451 CloseConstrainedWindows(); | 451 CloseConstrainedWindows(); |
| 452 | 452 |
| 453 // Close all blocked popups. | 453 // Close all blocked popups. |
| 454 if (blocked_popups_) | 454 if (blocked_popups_) |
| 455 blocked_popups_->Destroy(); | 455 blocked_popups_->Destroy(); |
| 456 | 456 |
| 457 // There may be pending file dialogs, we need to tell them that we've gone | |
| 458 // away so they don't try and call back to us. | |
| 459 if (select_file_dialog_.get()) | |
| 460 select_file_dialog_->ListenerDestroyed(); | |
| 461 | |
| 462 // Notify any observer that have a reference on this tab contents. | 457 // Notify any observer that have a reference on this tab contents. |
| 463 NotificationService::current()->Notify( | 458 NotificationService::current()->Notify( |
| 464 NotificationType::TAB_CONTENTS_DESTROYED, | 459 NotificationType::TAB_CONTENTS_DESTROYED, |
| 465 Source<TabContents>(this), | 460 Source<TabContents>(this), |
| 466 NotificationService::NoDetails()); | 461 NotificationService::NoDetails()); |
| 467 | 462 |
| 468 // Notify any lasting InfobarDelegates that have not yet been removed that | 463 // Notify any lasting InfobarDelegates that have not yet been removed that |
| 469 // whatever infobar they were handling in this TabContents has closed, | 464 // whatever infobar they were handling in this TabContents has closed, |
| 470 // because the TabContents is going away entirely. | 465 // because the TabContents is going away entirely. |
| 471 // This must happen after the TAB_CONTENTS_DESTROYED notification as the | 466 // This must happen after the TAB_CONTENTS_DESTROYED notification as the |
| (...skipping 1783 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2255 RenderViewHostDelegate::BlockedPlugin* TabContents::GetBlockedPluginDelegate() { | 2250 RenderViewHostDelegate::BlockedPlugin* TabContents::GetBlockedPluginDelegate() { |
| 2256 if (blocked_plugin_manager_.get() == NULL) | 2251 if (blocked_plugin_manager_.get() == NULL) |
| 2257 blocked_plugin_manager_.reset(new BlockedPluginManager(this)); | 2252 blocked_plugin_manager_.reset(new BlockedPluginManager(this)); |
| 2258 return blocked_plugin_manager_.get(); | 2253 return blocked_plugin_manager_.get(); |
| 2259 } | 2254 } |
| 2260 | 2255 |
| 2261 RenderViewHostDelegate::SSL* TabContents::GetSSLDelegate() { | 2256 RenderViewHostDelegate::SSL* TabContents::GetSSLDelegate() { |
| 2262 return GetSSLHelper(); | 2257 return GetSSLHelper(); |
| 2263 } | 2258 } |
| 2264 | 2259 |
| 2260 RenderViewHostDelegate::FileSelect* TabContents::GetFileSelectDelegate() { |
| 2261 if (file_select_helper_.get() == NULL) |
| 2262 file_select_helper_.reset(new TabContentsFileSelectHelper(this)); |
| 2263 return file_select_helper_.get(); |
| 2264 } |
| 2265 |
| 2265 AutomationResourceRoutingDelegate* | 2266 AutomationResourceRoutingDelegate* |
| 2266 TabContents::GetAutomationResourceRoutingDelegate() { | 2267 TabContents::GetAutomationResourceRoutingDelegate() { |
| 2267 return delegate(); | 2268 return delegate(); |
| 2268 } | 2269 } |
| 2269 | 2270 |
| 2270 RenderViewHostDelegate::BookmarkDrag* TabContents::GetBookmarkDragDelegate() { | 2271 RenderViewHostDelegate::BookmarkDrag* TabContents::GetBookmarkDragDelegate() { |
| 2271 return bookmark_drag_; | 2272 return bookmark_drag_; |
| 2272 } | 2273 } |
| 2273 | 2274 |
| 2274 void TabContents::SetBookmarkDragDelegate( | 2275 void TabContents::SetBookmarkDragDelegate( |
| (...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2622 render_manager_.dom_ui()->ProcessDOMUIMessage(params); | 2623 render_manager_.dom_ui()->ProcessDOMUIMessage(params); |
| 2623 } | 2624 } |
| 2624 | 2625 |
| 2625 void TabContents::ProcessExternalHostMessage(const std::string& message, | 2626 void TabContents::ProcessExternalHostMessage(const std::string& message, |
| 2626 const std::string& origin, | 2627 const std::string& origin, |
| 2627 const std::string& target) { | 2628 const std::string& target) { |
| 2628 if (delegate()) | 2629 if (delegate()) |
| 2629 delegate()->ForwardMessageToExternalHost(message, origin, target); | 2630 delegate()->ForwardMessageToExternalHost(message, origin, target); |
| 2630 } | 2631 } |
| 2631 | 2632 |
| 2632 void TabContents::RunFileChooser( | |
| 2633 const ViewHostMsg_RunFileChooser_Params ¶ms) { | |
| 2634 if (!select_file_dialog_.get()) | |
| 2635 select_file_dialog_ = SelectFileDialog::Create(this); | |
| 2636 | |
| 2637 SelectFileDialog::Type dialog_type; | |
| 2638 switch (params.mode) { | |
| 2639 case ViewHostMsg_RunFileChooser_Params::Open: | |
| 2640 dialog_type = SelectFileDialog::SELECT_OPEN_FILE; | |
| 2641 break; | |
| 2642 case ViewHostMsg_RunFileChooser_Params::OpenMultiple: | |
| 2643 dialog_type = SelectFileDialog::SELECT_OPEN_MULTI_FILE; | |
| 2644 break; | |
| 2645 case ViewHostMsg_RunFileChooser_Params::Save: | |
| 2646 dialog_type = SelectFileDialog::SELECT_SAVEAS_FILE; | |
| 2647 break; | |
| 2648 default: | |
| 2649 dialog_type = SelectFileDialog::SELECT_OPEN_FILE; // Prevent warning. | |
| 2650 NOTREACHED(); | |
| 2651 } | |
| 2652 FilePath default_file_name = params.default_file_name; | |
| 2653 if (default_file_name.empty()) | |
| 2654 default_file_name = profile()->last_selected_directory(); | |
| 2655 select_file_dialog_->SelectFile(dialog_type, params.title, | |
| 2656 default_file_name, | |
| 2657 NULL, 0, FILE_PATH_LITERAL(""), | |
| 2658 view_->GetTopLevelNativeWindow(), NULL); | |
| 2659 } | |
| 2660 | |
| 2661 void TabContents::RunJavaScriptMessage( | 2633 void TabContents::RunJavaScriptMessage( |
| 2662 const std::wstring& message, | 2634 const std::wstring& message, |
| 2663 const std::wstring& default_prompt, | 2635 const std::wstring& default_prompt, |
| 2664 const GURL& frame_url, | 2636 const GURL& frame_url, |
| 2665 const int flags, | 2637 const int flags, |
| 2666 IPC::Message* reply_msg, | 2638 IPC::Message* reply_msg, |
| 2667 bool* did_suppress_message) { | 2639 bool* did_suppress_message) { |
| 2668 // Suppress javascript messages when requested and when inside a constrained | 2640 // Suppress javascript messages when requested and when inside a constrained |
| 2669 // popup window (because that activates them and breaks them out of the | 2641 // popup window (because that activates them and breaks them out of the |
| 2670 // constrained window jail). | 2642 // constrained window jail). |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2908 Source<RenderViewHost>(render_view_host()), | 2880 Source<RenderViewHost>(render_view_host()), |
| 2909 NotificationService::NoDetails()); | 2881 NotificationService::NoDetails()); |
| 2910 } | 2882 } |
| 2911 | 2883 |
| 2912 void TabContents::SetDisplayingPDFContent() { | 2884 void TabContents::SetDisplayingPDFContent() { |
| 2913 displaying_pdf_content_ = true; | 2885 displaying_pdf_content_ = true; |
| 2914 if (delegate()) | 2886 if (delegate()) |
| 2915 delegate()->ContentTypeChanged(this); | 2887 delegate()->ContentTypeChanged(this); |
| 2916 } | 2888 } |
| 2917 | 2889 |
| 2918 void TabContents::FileSelected(const FilePath& path, | |
| 2919 int index, void* params) { | |
| 2920 profile()->set_last_selected_directory(path.DirName()); | |
| 2921 std::vector<FilePath> files; | |
| 2922 files.push_back(path); | |
| 2923 render_view_host()->FilesSelectedInChooser(files); | |
| 2924 } | |
| 2925 | |
| 2926 void TabContents::MultiFilesSelected(const std::vector<FilePath>& files, | |
| 2927 void* params) { | |
| 2928 if (!files.empty()) | |
| 2929 profile()->set_last_selected_directory(files[0].DirName()); | |
| 2930 render_view_host()->FilesSelectedInChooser(files); | |
| 2931 } | |
| 2932 | |
| 2933 void TabContents::FileSelectionCanceled(void* params) { | |
| 2934 // If the user cancels choosing a file to upload we pass back an | |
| 2935 // empty vector. | |
| 2936 render_view_host()->FilesSelectedInChooser(std::vector<FilePath>()); | |
| 2937 } | |
| 2938 | |
| 2939 void TabContents::BeforeUnloadFiredFromRenderManager( | 2890 void TabContents::BeforeUnloadFiredFromRenderManager( |
| 2940 bool proceed, | 2891 bool proceed, |
| 2941 bool* proceed_to_fire_unload) { | 2892 bool* proceed_to_fire_unload) { |
| 2942 if (delegate()) | 2893 if (delegate()) |
| 2943 delegate()->BeforeUnloadFired(this, proceed, proceed_to_fire_unload); | 2894 delegate()->BeforeUnloadFired(this, proceed, proceed_to_fire_unload); |
| 2944 } | 2895 } |
| 2945 | 2896 |
| 2946 void TabContents::DidStartLoadingFromRenderManager( | 2897 void TabContents::DidStartLoadingFromRenderManager( |
| 2947 RenderViewHost* render_view_host) { | 2898 RenderViewHost* render_view_host) { |
| 2948 DidStartLoading(); | 2899 DidStartLoading(); |
| (...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3270 AddInfoBar(new SavePasswordInfoBarDelegate(this, form_to_save)); | 3221 AddInfoBar(new SavePasswordInfoBarDelegate(this, form_to_save)); |
| 3271 } | 3222 } |
| 3272 | 3223 |
| 3273 Profile* TabContents::GetProfileForPasswordManager() { | 3224 Profile* TabContents::GetProfileForPasswordManager() { |
| 3274 return profile(); | 3225 return profile(); |
| 3275 } | 3226 } |
| 3276 | 3227 |
| 3277 bool TabContents::DidLastPageLoadEncounterSSLErrors() { | 3228 bool TabContents::DidLastPageLoadEncounterSSLErrors() { |
| 3278 return controller().ssl_manager()->ProcessedSSLErrorFromRequest(); | 3229 return controller().ssl_manager()->ProcessedSSLErrorFromRequest(); |
| 3279 } | 3230 } |
| OLD | NEW |