| 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/tab_contents/tab_contents.h" | 5 #include "content/browser/tab_contents/tab_contents.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 #include "content/public/common/url_constants.h" | 58 #include "content/public/common/url_constants.h" |
| 59 #include "net/base/mime_util.h" | 59 #include "net/base/mime_util.h" |
| 60 #include "net/base/net_util.h" | 60 #include "net/base/net_util.h" |
| 61 #include "net/base/network_change_notifier.h" | 61 #include "net/base/network_change_notifier.h" |
| 62 #include "net/url_request/url_request_context_getter.h" | 62 #include "net/url_request/url_request_context_getter.h" |
| 63 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" | 63 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" |
| 64 #include "ui/gfx/codec/png_codec.h" | 64 #include "ui/gfx/codec/png_codec.h" |
| 65 #include "webkit/glue/web_intent_data.h" | 65 #include "webkit/glue/web_intent_data.h" |
| 66 #include "webkit/glue/webpreferences.h" | 66 #include "webkit/glue/webpreferences.h" |
| 67 | 67 |
| 68 #if defined(OS_MACOSX) | 68 #if defined(OS_WIN) && !defined(USE_AURA) |
| 69 #include "content/browser/tab_contents/tab_contents_view_win.h" |
| 70 #elif defined(TOOLKIT_GTK) |
| 71 #include "content/browser/tab_contents/tab_contents_view_gtk.h" |
| 72 #elif defined(OS_MACOSX) |
| 73 #include "content/browser/tab_contents/web_contents_view_mac.h" |
| 69 #include "ui/gfx/surface/io_surface_support_mac.h" | 74 #include "ui/gfx/surface/io_surface_support_mac.h" |
| 70 #endif // defined(OS_MACOSX) | 75 #elif defined(OS_ANDROID) |
| 76 #include "content/browser/tab_contents/web_contents_view_android.h" |
| 77 #endif |
| 71 | 78 |
| 72 // Cross-Site Navigations | 79 // Cross-Site Navigations |
| 73 // | 80 // |
| 74 // If a TabContents is told to navigate to a different web site (as determined | 81 // If a TabContents is told to navigate to a different web site (as determined |
| 75 // by SiteInstance), it will replace its current RenderViewHost with a new | 82 // by SiteInstance), it will replace its current RenderViewHost with a new |
| 76 // RenderViewHost dedicated to the new SiteInstance. This works as follows: | 83 // RenderViewHost dedicated to the new SiteInstance. This works as follows: |
| 77 // | 84 // |
| 78 // - Navigate determines whether the destination is cross-site, and if so, | 85 // - Navigate determines whether the destination is cross-site, and if so, |
| 79 // it creates a pending_render_view_host_. | 86 // it creates a pending_render_view_host_. |
| 80 // - The pending RVH is "suspended," so that no navigation messages are sent to | 87 // - The pending RVH is "suspended," so that no navigation messages are sent to |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 232 // TabContents ---------------------------------------------------------------- | 239 // TabContents ---------------------------------------------------------------- |
| 233 | 240 |
| 234 TabContents::TabContents(content::BrowserContext* browser_context, | 241 TabContents::TabContents(content::BrowserContext* browser_context, |
| 235 SiteInstance* site_instance, | 242 SiteInstance* site_instance, |
| 236 int routing_id, | 243 int routing_id, |
| 237 const TabContents* base_tab_contents, | 244 const TabContents* base_tab_contents, |
| 238 SessionStorageNamespaceImpl* session_storage_namespace) | 245 SessionStorageNamespaceImpl* session_storage_namespace) |
| 239 : delegate_(NULL), | 246 : delegate_(NULL), |
| 240 ALLOW_THIS_IN_INITIALIZER_LIST(controller_( | 247 ALLOW_THIS_IN_INITIALIZER_LIST(controller_( |
| 241 this, browser_context, session_storage_namespace)), | 248 this, browser_context, session_storage_namespace)), |
| 242 ALLOW_THIS_IN_INITIALIZER_LIST(view_( | |
| 243 content::GetContentClient()->browser()->CreateWebContentsView(this))), | |
| 244 ALLOW_THIS_IN_INITIALIZER_LIST(render_manager_(this, this)), | 249 ALLOW_THIS_IN_INITIALIZER_LIST(render_manager_(this, this)), |
| 245 is_loading_(false), | 250 is_loading_(false), |
| 246 crashed_status_(base::TERMINATION_STATUS_STILL_RUNNING), | 251 crashed_status_(base::TERMINATION_STATUS_STILL_RUNNING), |
| 247 crashed_error_code_(0), | 252 crashed_error_code_(0), |
| 248 waiting_for_response_(false), | 253 waiting_for_response_(false), |
| 249 load_state_(net::LOAD_STATE_IDLE, string16()), | 254 load_state_(net::LOAD_STATE_IDLE, string16()), |
| 250 upload_size_(0), | 255 upload_size_(0), |
| 251 upload_position_(0), | 256 upload_position_(0), |
| 252 displayed_insecure_content_(false), | 257 displayed_insecure_content_(false), |
| 253 capturing_contents_(false), | 258 capturing_contents_(false), |
| 254 is_being_destroyed_(false), | 259 is_being_destroyed_(false), |
| 255 notify_disconnection_(false), | 260 notify_disconnection_(false), |
| 256 dialog_creator_(NULL), | 261 dialog_creator_(NULL), |
| 257 #if defined(OS_WIN) | 262 #if defined(OS_WIN) |
| 258 message_box_active_(CreateEvent(NULL, TRUE, FALSE, NULL)), | 263 message_box_active_(CreateEvent(NULL, TRUE, FALSE, NULL)), |
| 259 #endif | 264 #endif |
| 260 is_showing_before_unload_dialog_(false), | 265 is_showing_before_unload_dialog_(false), |
| 261 opener_web_ui_type_(WebUI::kNoWebUI), | 266 opener_web_ui_type_(WebUI::kNoWebUI), |
| 262 closed_by_user_gesture_(false), | 267 closed_by_user_gesture_(false), |
| 263 minimum_zoom_percent_( | 268 minimum_zoom_percent_( |
| 264 static_cast<int>(content::kMinimumZoomFactor * 100)), | 269 static_cast<int>(content::kMinimumZoomFactor * 100)), |
| 265 maximum_zoom_percent_( | 270 maximum_zoom_percent_( |
| 266 static_cast<int>(content::kMaximumZoomFactor * 100)), | 271 static_cast<int>(content::kMaximumZoomFactor * 100)), |
| 267 temporary_zoom_settings_(false), | 272 temporary_zoom_settings_(false), |
| 268 content_restrictions_(0), | 273 content_restrictions_(0), |
| 269 view_type_(content::VIEW_TYPE_TAB_CONTENTS), | 274 view_type_(content::VIEW_TYPE_TAB_CONTENTS), |
| 270 has_opener_(false) { | 275 has_opener_(false) { |
| 271 render_manager_.Init(browser_context, site_instance, routing_id); | 276 render_manager_.Init(browser_context, site_instance, routing_id); |
| 272 | 277 |
| 278 view_.reset(content::GetContentClient()->browser()-> |
| 279 OverrideCreateWebContentsView(this)); |
| 280 if (!view_.get()) { |
| 281 content::WebContentsViewDelegate* delegate = |
| 282 content::GetContentClient()->browser()->GetWebContentsViewDelegate( |
| 283 this); |
| 284 #if defined(OS_WIN) && !defined(USE_AURA) |
| 285 view_.reset(new TabContentsViewWin(this, delegate)); |
| 286 #elif defined(TOOLKIT_GTK) |
| 287 view_.reset(new content::TabContentsViewGtk(this, delegate)); |
| 288 #elif defined(OS_MACOSX) |
| 289 view_.reset(web_contents_view_mac::CreateWebContentsView(this, delegate)); |
| 290 #elif defined(OS_ANDROID) |
| 291 view_.reset(new WebContentsViewAndroid(this)); |
| 292 #endif |
| 293 } |
| 294 CHECK(view_.get()); |
| 295 |
| 273 // We have the initial size of the view be based on the size of the passed in | 296 // We have the initial size of the view be based on the size of the passed in |
| 274 // tab contents (normally a tab from the same window). | 297 // tab contents (normally a tab from the same window). |
| 275 view_->CreateView(base_tab_contents ? | 298 view_->CreateView(base_tab_contents ? |
| 276 base_tab_contents->GetView()->GetContainerSize() : gfx::Size()); | 299 base_tab_contents->GetView()->GetContainerSize() : gfx::Size()); |
| 277 | 300 |
| 278 #if defined(ENABLE_JAVA_BRIDGE) | 301 #if defined(ENABLE_JAVA_BRIDGE) |
| 279 java_bridge_dispatcher_host_manager_.reset( | 302 java_bridge_dispatcher_host_manager_.reset( |
| 280 new JavaBridgeDispatcherHostManager(this)); | 303 new JavaBridgeDispatcherHostManager(this)); |
| 281 #endif | 304 #endif |
| 282 } | 305 } |
| (...skipping 2220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2503 void TabContents::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) { | 2526 void TabContents::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) { |
| 2504 RenderWidgetHostView* rwh_view = GetView()->CreateViewForWidget(rvh); | 2527 RenderWidgetHostView* rwh_view = GetView()->CreateViewForWidget(rvh); |
| 2505 // Can be NULL during tests. | 2528 // Can be NULL during tests. |
| 2506 if (rwh_view) | 2529 if (rwh_view) |
| 2507 rwh_view->SetSize(GetView()->GetContainerSize()); | 2530 rwh_view->SetSize(GetView()->GetContainerSize()); |
| 2508 } | 2531 } |
| 2509 | 2532 |
| 2510 RenderViewHostImpl* TabContents::GetRenderViewHostImpl() { | 2533 RenderViewHostImpl* TabContents::GetRenderViewHostImpl() { |
| 2511 return static_cast<RenderViewHostImpl*>(GetRenderViewHost()); | 2534 return static_cast<RenderViewHostImpl*>(GetRenderViewHost()); |
| 2512 } | 2535 } |
| OLD | NEW |