| 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/web_contents/web_contents_impl.h" | 5 #include "content/browser/web_contents/web_contents_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <cmath> | 9 #include <cmath> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 const int kMinimumDelayBetweenLoadingUpdatesMS = 100; | 147 const int kMinimumDelayBetweenLoadingUpdatesMS = 100; |
| 148 const char kDotGoogleDotCom[] = ".google.com"; | 148 const char kDotGoogleDotCom[] = ".google.com"; |
| 149 | 149 |
| 150 #if defined(OS_ANDROID) | 150 #if defined(OS_ANDROID) |
| 151 const char kWebContentsAndroidKey[] = "web_contents_android"; | 151 const char kWebContentsAndroidKey[] = "web_contents_android"; |
| 152 #endif // OS_ANDROID | 152 #endif // OS_ANDROID |
| 153 | 153 |
| 154 base::LazyInstance<std::vector<WebContentsImpl::CreatedCallback> > | 154 base::LazyInstance<std::vector<WebContentsImpl::CreatedCallback> > |
| 155 g_created_callbacks = LAZY_INSTANCE_INITIALIZER; | 155 g_created_callbacks = LAZY_INSTANCE_INITIALIZER; |
| 156 | 156 |
| 157 static void DidDownloadImage(const WebContents::ImageDownloadCallback& callback, | |
| 158 int id, | |
| 159 const GURL& image_url, | |
| 160 image_downloader::DownloadResultPtr result) { | |
| 161 DCHECK(result); | |
| 162 | |
| 163 const std::vector<SkBitmap> images = | |
| 164 result->images.To<std::vector<SkBitmap>>(); | |
| 165 const std::vector<gfx::Size> original_image_sizes = | |
| 166 result->original_image_sizes.To<std::vector<gfx::Size>>(); | |
| 167 | |
| 168 callback.Run(id, result->http_status_code, image_url, images, | |
| 169 original_image_sizes); | |
| 170 } | |
| 171 | |
| 172 void NotifyCacheOnIO( | 157 void NotifyCacheOnIO( |
| 173 scoped_refptr<net::URLRequestContextGetter> request_context, | 158 scoped_refptr<net::URLRequestContextGetter> request_context, |
| 174 const GURL& url, | 159 const GURL& url, |
| 175 const std::string& http_method) { | 160 const std::string& http_method) { |
| 176 net::HttpCache* cache = request_context->GetURLRequestContext()-> | 161 net::HttpCache* cache = request_context->GetURLRequestContext()-> |
| 177 http_transaction_factory()->GetCache(); | 162 http_transaction_factory()->GetCache(); |
| 178 if (cache) | 163 if (cache) |
| 179 cache->OnExternalCacheHit(url, http_method); | 164 cache->OnExternalCacheHit(url, http_method); |
| 180 } | 165 } |
| 181 | 166 |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 408 fullscreen_widget_had_focus_at_shutdown_(false), | 393 fullscreen_widget_had_focus_at_shutdown_(false), |
| 409 is_subframe_(false), | 394 is_subframe_(false), |
| 410 force_disable_overscroll_content_(false), | 395 force_disable_overscroll_content_(false), |
| 411 last_dialog_suppressed_(false), | 396 last_dialog_suppressed_(false), |
| 412 geolocation_service_context_(new GeolocationServiceContext()), | 397 geolocation_service_context_(new GeolocationServiceContext()), |
| 413 accessibility_mode_( | 398 accessibility_mode_( |
| 414 BrowserAccessibilityStateImpl::GetInstance()->accessibility_mode()), | 399 BrowserAccessibilityStateImpl::GetInstance()->accessibility_mode()), |
| 415 audio_stream_monitor_(this), | 400 audio_stream_monitor_(this), |
| 416 virtual_keyboard_requested_(false), | 401 virtual_keyboard_requested_(false), |
| 417 page_scale_factor_is_one_(true), | 402 page_scale_factor_is_one_(true), |
| 418 loading_weak_factory_(this) { | 403 loading_weak_factory_(this), |
| 404 weak_factory_(this) { |
| 419 frame_tree_.SetFrameRemoveListener( | 405 frame_tree_.SetFrameRemoveListener( |
| 420 base::Bind(&WebContentsImpl::OnFrameRemoved, | 406 base::Bind(&WebContentsImpl::OnFrameRemoved, |
| 421 base::Unretained(this))); | 407 base::Unretained(this))); |
| 422 #if defined(OS_ANDROID) | 408 #if defined(OS_ANDROID) |
| 423 media_web_contents_observer_.reset(new MediaWebContentsObserverAndroid(this)); | 409 media_web_contents_observer_.reset(new MediaWebContentsObserverAndroid(this)); |
| 424 #else | 410 #else |
| 425 media_web_contents_observer_.reset(new MediaWebContentsObserver(this)); | 411 media_web_contents_observer_.reset(new MediaWebContentsObserver(this)); |
| 426 #endif | 412 #endif |
| 427 wake_lock_service_context_.reset(new WakeLockServiceContext(this)); | 413 wake_lock_service_context_.reset(new WakeLockServiceContext(this)); |
| 428 } | 414 } |
| (...skipping 2382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2811 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 2797 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 2812 static int next_image_download_id = 0; | 2798 static int next_image_download_id = 0; |
| 2813 const image_downloader::ImageDownloaderPtr& mojo_image_downloader = | 2799 const image_downloader::ImageDownloaderPtr& mojo_image_downloader = |
| 2814 GetMainFrame()->GetMojoImageDownloader(); | 2800 GetMainFrame()->GetMojoImageDownloader(); |
| 2815 const int download_id = ++next_image_download_id; | 2801 const int download_id = ++next_image_download_id; |
| 2816 if (!mojo_image_downloader) { | 2802 if (!mojo_image_downloader) { |
| 2817 // If the renderer process is dead (i.e. crash, or memory pressure on | 2803 // If the renderer process is dead (i.e. crash, or memory pressure on |
| 2818 // Android), the downloader service will be invalid. Pre-Mojo, this would | 2804 // Android), the downloader service will be invalid. Pre-Mojo, this would |
| 2819 // hang the callback indefinetly since the IPC would be dropped. Now, | 2805 // hang the callback indefinetly since the IPC would be dropped. Now, |
| 2820 // respond with a 400 HTTP error code to indicate that something went wrong. | 2806 // respond with a 400 HTTP error code to indicate that something went wrong. |
| 2807 image_downloader::DownloadResultPtr result = |
| 2808 image_downloader::DownloadResult::New(); |
| 2809 result->http_status_code = 400; |
| 2821 BrowserThread::PostTask( | 2810 BrowserThread::PostTask( |
| 2822 BrowserThread::UI, FROM_HERE, | 2811 BrowserThread::UI, FROM_HERE, |
| 2823 base::Bind(&WebContents::ImageDownloadCallback::Run, | 2812 base::Bind(&WebContentsImpl::OnDidDownloadImage, |
| 2824 base::Owned(new ImageDownloadCallback(callback)), | 2813 weak_factory_.GetWeakPtr(), callback, download_id, url, |
| 2825 download_id, 400, url, std::vector<SkBitmap>(), | 2814 base::Passed(&result))); |
| 2826 std::vector<gfx::Size>())); | |
| 2827 return download_id; | 2815 return download_id; |
| 2828 } | 2816 } |
| 2829 | 2817 |
| 2830 image_downloader::DownloadRequestPtr req = | 2818 image_downloader::DownloadRequestPtr req = |
| 2831 image_downloader::DownloadRequest::New(); | 2819 image_downloader::DownloadRequest::New(); |
| 2832 | 2820 |
| 2833 req->url = mojo::String::From(url); | 2821 req->url = mojo::String::From(url); |
| 2834 req->is_favicon = is_favicon; | 2822 req->is_favicon = is_favicon; |
| 2835 req->max_bitmap_size = max_bitmap_size; | 2823 req->max_bitmap_size = max_bitmap_size; |
| 2836 req->bypass_cache = bypass_cache; | 2824 req->bypass_cache = bypass_cache; |
| 2837 | 2825 |
| 2838 mojo_image_downloader->DownloadImage( | 2826 mojo_image_downloader->DownloadImage( |
| 2839 std::move(req), | 2827 std::move(req), base::Bind(&WebContentsImpl::OnDidDownloadImage, |
| 2840 base::Bind(&DidDownloadImage, callback, download_id, url)); | 2828 weak_factory_.GetWeakPtr(), callback, |
| 2829 download_id, url)); |
| 2841 return download_id; | 2830 return download_id; |
| 2842 } | 2831 } |
| 2843 | 2832 |
| 2844 bool WebContentsImpl::IsSubframe() const { | 2833 bool WebContentsImpl::IsSubframe() const { |
| 2845 return is_subframe_; | 2834 return is_subframe_; |
| 2846 } | 2835 } |
| 2847 | 2836 |
| 2848 void WebContentsImpl::Find(int request_id, | 2837 void WebContentsImpl::Find(int request_id, |
| 2849 const base::string16& search_text, | 2838 const base::string16& search_text, |
| 2850 const blink::WebFindOptions& options) { | 2839 const blink::WebFindOptions& options) { |
| (...skipping 1758 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4609 void WebContentsImpl::SetAllowOtherViews(bool allow) { | 4598 void WebContentsImpl::SetAllowOtherViews(bool allow) { |
| 4610 view_->SetAllowOtherViews(allow); | 4599 view_->SetAllowOtherViews(allow); |
| 4611 } | 4600 } |
| 4612 | 4601 |
| 4613 bool WebContentsImpl::GetAllowOtherViews() { | 4602 bool WebContentsImpl::GetAllowOtherViews() { |
| 4614 return view_->GetAllowOtherViews(); | 4603 return view_->GetAllowOtherViews(); |
| 4615 } | 4604 } |
| 4616 | 4605 |
| 4617 #endif | 4606 #endif |
| 4618 | 4607 |
| 4608 void WebContentsImpl::OnDidDownloadImage( |
| 4609 const ImageDownloadCallback& callback, |
| 4610 int id, |
| 4611 const GURL& image_url, |
| 4612 image_downloader::DownloadResultPtr result) { |
| 4613 const std::vector<SkBitmap> images = |
| 4614 result->images.To<std::vector<SkBitmap>>(); |
| 4615 const std::vector<gfx::Size> original_image_sizes = |
| 4616 result->original_image_sizes.To<std::vector<gfx::Size>>(); |
| 4617 |
| 4618 callback.Run(id, result->http_status_code, image_url, images, |
| 4619 original_image_sizes); |
| 4620 } |
| 4621 |
| 4619 void WebContentsImpl::OnDialogClosed(int render_process_id, | 4622 void WebContentsImpl::OnDialogClosed(int render_process_id, |
| 4620 int render_frame_id, | 4623 int render_frame_id, |
| 4621 IPC::Message* reply_msg, | 4624 IPC::Message* reply_msg, |
| 4622 bool dialog_was_suppressed, | 4625 bool dialog_was_suppressed, |
| 4623 bool success, | 4626 bool success, |
| 4624 const base::string16& user_input) { | 4627 const base::string16& user_input) { |
| 4625 RenderFrameHostImpl* rfh = RenderFrameHostImpl::FromID(render_process_id, | 4628 RenderFrameHostImpl* rfh = RenderFrameHostImpl::FromID(render_process_id, |
| 4626 render_frame_id); | 4629 render_frame_id); |
| 4627 last_dialog_suppressed_ = dialog_was_suppressed; | 4630 last_dialog_suppressed_ = dialog_was_suppressed; |
| 4628 | 4631 |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4749 const WebContentsObserver::MediaPlayerId& id) { | 4752 const WebContentsObserver::MediaPlayerId& id) { |
| 4750 FOR_EACH_OBSERVER(WebContentsObserver, observers_, MediaStartedPlaying(id)); | 4753 FOR_EACH_OBSERVER(WebContentsObserver, observers_, MediaStartedPlaying(id)); |
| 4751 } | 4754 } |
| 4752 | 4755 |
| 4753 void WebContentsImpl::MediaStoppedPlaying( | 4756 void WebContentsImpl::MediaStoppedPlaying( |
| 4754 const WebContentsObserver::MediaPlayerId& id) { | 4757 const WebContentsObserver::MediaPlayerId& id) { |
| 4755 FOR_EACH_OBSERVER(WebContentsObserver, observers_, MediaStoppedPlaying(id)); | 4758 FOR_EACH_OBSERVER(WebContentsObserver, observers_, MediaStoppedPlaying(id)); |
| 4756 } | 4759 } |
| 4757 | 4760 |
| 4758 } // namespace content | 4761 } // namespace content |
| OLD | NEW |