| OLD | NEW | 
|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/renderer/render_frame_impl.h" | 5 #include "content/renderer/render_frame_impl.h" | 
| 6 | 6 | 
| 7 #include <map> | 7 #include <map> | 
| 8 #include <string> | 8 #include <string> | 
| 9 #include <utility> | 9 #include <utility> | 
| 10 #include <vector> | 10 #include <vector> | 
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 147 #include "third_party/WebKit/public/platform/WebData.h" | 147 #include "third_party/WebKit/public/platform/WebData.h" | 
| 148 #include "third_party/WebKit/public/platform/WebStorageQuotaCallbacks.h" | 148 #include "third_party/WebKit/public/platform/WebStorageQuotaCallbacks.h" | 
| 149 #include "third_party/WebKit/public/platform/WebString.h" | 149 #include "third_party/WebKit/public/platform/WebString.h" | 
| 150 #include "third_party/WebKit/public/platform/WebURL.h" | 150 #include "third_party/WebKit/public/platform/WebURL.h" | 
| 151 #include "third_party/WebKit/public/platform/WebURLError.h" | 151 #include "third_party/WebKit/public/platform/WebURLError.h" | 
| 152 #include "third_party/WebKit/public/platform/WebURLResponse.h" | 152 #include "third_party/WebKit/public/platform/WebURLResponse.h" | 
| 153 #include "third_party/WebKit/public/platform/WebVector.h" | 153 #include "third_party/WebKit/public/platform/WebVector.h" | 
| 154 #include "third_party/WebKit/public/platform/modules/webusb/WebUSBClient.h" | 154 #include "third_party/WebKit/public/platform/modules/webusb/WebUSBClient.h" | 
| 155 #include "third_party/WebKit/public/web/WebColorSuggestion.h" | 155 #include "third_party/WebKit/public/web/WebColorSuggestion.h" | 
| 156 #include "third_party/WebKit/public/web/WebDocument.h" | 156 #include "third_party/WebKit/public/web/WebDocument.h" | 
|  | 157 #include "third_party/WebKit/public/web/WebFrameSerializer.h" | 
| 157 #include "third_party/WebKit/public/web/WebFrameWidget.h" | 158 #include "third_party/WebKit/public/web/WebFrameWidget.h" | 
| 158 #include "third_party/WebKit/public/web/WebKit.h" | 159 #include "third_party/WebKit/public/web/WebKit.h" | 
| 159 #include "third_party/WebKit/public/web/WebLocalFrame.h" | 160 #include "third_party/WebKit/public/web/WebLocalFrame.h" | 
| 160 #include "third_party/WebKit/public/web/WebMediaStreamRegistry.h" | 161 #include "third_party/WebKit/public/web/WebMediaStreamRegistry.h" | 
| 161 #include "third_party/WebKit/public/web/WebNavigationPolicy.h" | 162 #include "third_party/WebKit/public/web/WebNavigationPolicy.h" | 
| 162 #include "third_party/WebKit/public/web/WebPageSerializer.h" |  | 
| 163 #include "third_party/WebKit/public/web/WebPlugin.h" | 163 #include "third_party/WebKit/public/web/WebPlugin.h" | 
| 164 #include "third_party/WebKit/public/web/WebPluginParams.h" | 164 #include "third_party/WebKit/public/web/WebPluginParams.h" | 
| 165 #include "third_party/WebKit/public/web/WebRange.h" | 165 #include "third_party/WebKit/public/web/WebRange.h" | 
| 166 #include "third_party/WebKit/public/web/WebScopedUserGesture.h" | 166 #include "third_party/WebKit/public/web/WebScopedUserGesture.h" | 
| 167 #include "third_party/WebKit/public/web/WebScriptSource.h" | 167 #include "third_party/WebKit/public/web/WebScriptSource.h" | 
| 168 #include "third_party/WebKit/public/web/WebSearchableFormData.h" | 168 #include "third_party/WebKit/public/web/WebSearchableFormData.h" | 
| 169 #include "third_party/WebKit/public/web/WebSecurityOrigin.h" | 169 #include "third_party/WebKit/public/web/WebSecurityOrigin.h" | 
| 170 #include "third_party/WebKit/public/web/WebSecurityPolicy.h" | 170 #include "third_party/WebKit/public/web/WebSecurityPolicy.h" | 
| 171 #include "third_party/WebKit/public/web/WebSerializedScriptValue.h" | 171 #include "third_party/WebKit/public/web/WebSerializedScriptValue.h" | 
| 172 #include "third_party/WebKit/public/web/WebSettings.h" | 172 #include "third_party/WebKit/public/web/WebSettings.h" | 
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 233 using blink::WebCString; | 233 using blink::WebCString; | 
| 234 using blink::WebData; | 234 using blink::WebData; | 
| 235 using blink::WebDataSource; | 235 using blink::WebDataSource; | 
| 236 using blink::WebDocument; | 236 using blink::WebDocument; | 
| 237 using blink::WebDOMEvent; | 237 using blink::WebDOMEvent; | 
| 238 using blink::WebDOMMessageEvent; | 238 using blink::WebDOMMessageEvent; | 
| 239 using blink::WebElement; | 239 using blink::WebElement; | 
| 240 using blink::WebExternalPopupMenu; | 240 using blink::WebExternalPopupMenu; | 
| 241 using blink::WebExternalPopupMenuClient; | 241 using blink::WebExternalPopupMenuClient; | 
| 242 using blink::WebFrame; | 242 using blink::WebFrame; | 
|  | 243 using blink::WebFrameSerializer; | 
|  | 244 using blink::WebFrameSerializerClient; | 
| 243 using blink::WebHistoryItem; | 245 using blink::WebHistoryItem; | 
| 244 using blink::WebHTTPBody; | 246 using blink::WebHTTPBody; | 
| 245 using blink::WebLocalFrame; | 247 using blink::WebLocalFrame; | 
| 246 using blink::WebMediaPlayer; | 248 using blink::WebMediaPlayer; | 
| 247 using blink::WebMediaPlayerClient; | 249 using blink::WebMediaPlayerClient; | 
| 248 using blink::WebMediaPlayerEncryptedMediaClient; | 250 using blink::WebMediaPlayerEncryptedMediaClient; | 
| 249 using blink::WebMediaSession; | 251 using blink::WebMediaSession; | 
| 250 using blink::WebNavigationPolicy; | 252 using blink::WebNavigationPolicy; | 
| 251 using blink::WebNavigationType; | 253 using blink::WebNavigationType; | 
| 252 using blink::WebNode; | 254 using blink::WebNode; | 
| 253 using blink::WebPageSerializer; |  | 
| 254 using blink::WebPageSerializerClient; |  | 
| 255 using blink::WebPluginParams; | 255 using blink::WebPluginParams; | 
| 256 using blink::WebPopupMenuInfo; | 256 using blink::WebPopupMenuInfo; | 
| 257 using blink::WebRange; | 257 using blink::WebRange; | 
| 258 using blink::WebReferrerPolicy; | 258 using blink::WebReferrerPolicy; | 
| 259 using blink::WebScriptSource; | 259 using blink::WebScriptSource; | 
| 260 using blink::WebSearchableFormData; | 260 using blink::WebSearchableFormData; | 
| 261 using blink::WebSecurityOrigin; | 261 using blink::WebSecurityOrigin; | 
| 262 using blink::WebSecurityPolicy; | 262 using blink::WebSecurityPolicy; | 
| 263 using blink::WebSerializedScriptValue; | 263 using blink::WebSerializedScriptValue; | 
| 264 using blink::WebServiceWorkerProvider; | 264 using blink::WebServiceWorkerProvider; | 
| (...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 576 | 576 | 
| 577 void OnGotContentHandlerID(uint32_t content_handler_id) {} | 577 void OnGotContentHandlerID(uint32_t content_handler_id) {} | 
| 578 | 578 | 
| 579 WebString ConvertRelativePathToHtmlAttribute(const base::FilePath& path) { | 579 WebString ConvertRelativePathToHtmlAttribute(const base::FilePath& path) { | 
| 580   DCHECK(!path.IsAbsolute()); | 580   DCHECK(!path.IsAbsolute()); | 
| 581   return WebString::fromUTF8( | 581   return WebString::fromUTF8( | 
| 582       std::string("./") + | 582       std::string("./") + | 
| 583       path.NormalizePathSeparatorsTo(FILE_PATH_LITERAL('/')).AsUTF8Unsafe()); | 583       path.NormalizePathSeparatorsTo(FILE_PATH_LITERAL('/')).AsUTF8Unsafe()); | 
| 584 } | 584 } | 
| 585 | 585 | 
| 586 // Implementation of WebPageSerializer::MHTMLPartsGenerationDelegate that | 586 // Implementation of WebFrameSerializer::MHTMLPartsGenerationDelegate that | 
| 587 // 1. Bases shouldSkipResource and getContentID responses on contents of | 587 // 1. Bases shouldSkipResource and getContentID responses on contents of | 
| 588 //    FrameMsg_SerializeAsMHTML_Params. | 588 //    FrameMsg_SerializeAsMHTML_Params. | 
| 589 // 2. Stores digests of urls of serialized resources (i.e. urls reported via | 589 // 2. Stores digests of urls of serialized resources (i.e. urls reported via | 
| 590 //    shouldSkipResource) into |digests_of_uris_of_serialized_resources| passed | 590 //    shouldSkipResource) into |digests_of_uris_of_serialized_resources| passed | 
| 591 //    to the constructor. | 591 //    to the constructor. | 
| 592 class MHTMLPartsGenerationDelegate | 592 class MHTMLPartsGenerationDelegate | 
| 593     : public WebPageSerializer::MHTMLPartsGenerationDelegate { | 593     : public WebFrameSerializer::MHTMLPartsGenerationDelegate { | 
| 594  public: | 594  public: | 
| 595   MHTMLPartsGenerationDelegate( | 595   MHTMLPartsGenerationDelegate( | 
| 596       const FrameMsg_SerializeAsMHTML_Params& params, | 596       const FrameMsg_SerializeAsMHTML_Params& params, | 
| 597       std::set<std::string>* digests_of_uris_of_serialized_resources) | 597       std::set<std::string>* digests_of_uris_of_serialized_resources) | 
| 598       : params_(params), | 598       : params_(params), | 
| 599         digests_of_uris_of_serialized_resources_( | 599         digests_of_uris_of_serialized_resources_( | 
| 600             digests_of_uris_of_serialized_resources) { | 600             digests_of_uris_of_serialized_resources) { | 
| 601     DCHECK(digests_of_uris_of_serialized_resources_); | 601     DCHECK(digests_of_uris_of_serialized_resources_); | 
| 602   } | 602   } | 
| 603 | 603 | 
| (...skipping 3604 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4208 blink::WebVRClient* RenderFrameImpl::webVRClient() { | 4208 blink::WebVRClient* RenderFrameImpl::webVRClient() { | 
| 4209   if (!vr_dispatcher_) | 4209   if (!vr_dispatcher_) | 
| 4210     vr_dispatcher_.reset(new VRDispatcher(GetServiceRegistry())); | 4210     vr_dispatcher_.reset(new VRDispatcher(GetServiceRegistry())); | 
| 4211 | 4211 | 
| 4212   return vr_dispatcher_.get(); | 4212   return vr_dispatcher_.get(); | 
| 4213 } | 4213 } | 
| 4214 #endif | 4214 #endif | 
| 4215 | 4215 | 
| 4216 void RenderFrameImpl::didSerializeDataForFrame( | 4216 void RenderFrameImpl::didSerializeDataForFrame( | 
| 4217     const WebCString& data, | 4217     const WebCString& data, | 
| 4218     WebPageSerializerClient::PageSerializationStatus status) { | 4218     WebFrameSerializerClient::FrameSerializationStatus status) { | 
| 4219   bool end_of_data = status == WebPageSerializerClient::CurrentFrameIsFinished; | 4219   bool end_of_data = status == WebFrameSerializerClient::CurrentFrameIsFinished; | 
| 4220   Send(new FrameHostMsg_SerializedHtmlWithLocalLinksResponse( | 4220   Send(new FrameHostMsg_SerializedHtmlWithLocalLinksResponse( | 
| 4221       routing_id_, data, end_of_data)); | 4221       routing_id_, data, end_of_data)); | 
| 4222 } | 4222 } | 
| 4223 | 4223 | 
| 4224 void RenderFrameImpl::AddObserver(RenderFrameObserver* observer) { | 4224 void RenderFrameImpl::AddObserver(RenderFrameObserver* observer) { | 
| 4225   observers_.AddObserver(observer); | 4225   observers_.AddObserver(observer); | 
| 4226 } | 4226 } | 
| 4227 | 4227 | 
| 4228 void RenderFrameImpl::RemoveObserver(RenderFrameObserver* observer) { | 4228 void RenderFrameImpl::RemoveObserver(RenderFrameObserver* observer) { | 
| 4229   observer->RenderFrameGone(); | 4229   observer->RenderFrameGone(); | 
| (...skipping 575 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4805   // Convert input to the canonical way of passing a map into a Blink API. | 4805   // Convert input to the canonical way of passing a map into a Blink API. | 
| 4806   std::vector<std::pair<WebURL, WebString>> weburl_to_local_path; | 4806   std::vector<std::pair<WebURL, WebString>> weburl_to_local_path; | 
| 4807   for (const auto& it : url_to_local_path) { | 4807   for (const auto& it : url_to_local_path) { | 
| 4808     const GURL& url = it.first; | 4808     const GURL& url = it.first; | 
| 4809     const base::FilePath& local_path = it.second; | 4809     const base::FilePath& local_path = it.second; | 
| 4810     weburl_to_local_path.push_back(std::make_pair( | 4810     weburl_to_local_path.push_back(std::make_pair( | 
| 4811         WebURL(url), ConvertRelativePathToHtmlAttribute(local_path))); | 4811         WebURL(url), ConvertRelativePathToHtmlAttribute(local_path))); | 
| 4812   } | 4812   } | 
| 4813 | 4813 | 
| 4814   // Serialize the frame (without recursing into subframes). | 4814   // Serialize the frame (without recursing into subframes). | 
| 4815   WebPageSerializer::serialize(GetWebFrame(), | 4815   WebFrameSerializer::serialize(GetWebFrame(), | 
| 4816                                this,  // WebPageSerializerClient. | 4816                                 this,  // WebFrameSerializerClient. | 
| 4817                                weburl_to_local_path); | 4817                                 weburl_to_local_path); | 
| 4818 } | 4818 } | 
| 4819 | 4819 | 
| 4820 void RenderFrameImpl::OnSerializeAsMHTML( | 4820 void RenderFrameImpl::OnSerializeAsMHTML( | 
| 4821     const FrameMsg_SerializeAsMHTML_Params& params) { | 4821     const FrameMsg_SerializeAsMHTML_Params& params) { | 
| 4822   // Unpack IPC payload. | 4822   // Unpack IPC payload. | 
| 4823   base::File file = IPC::PlatformFileForTransitToFile(params.destination_file); | 4823   base::File file = IPC::PlatformFileForTransitToFile(params.destination_file); | 
| 4824   const WebString mhtml_boundary = | 4824   const WebString mhtml_boundary = | 
| 4825       WebString::fromUTF8(params.mhtml_boundary_marker); | 4825       WebString::fromUTF8(params.mhtml_boundary_marker); | 
| 4826   DCHECK(!mhtml_boundary.isEmpty()); | 4826   DCHECK(!mhtml_boundary.isEmpty()); | 
| 4827 | 4827 | 
| 4828   WebData data; | 4828   WebData data; | 
| 4829   bool success = true; | 4829   bool success = true; | 
| 4830   std::set<std::string> digests_of_uris_of_serialized_resources; | 4830   std::set<std::string> digests_of_uris_of_serialized_resources; | 
| 4831   MHTMLPartsGenerationDelegate delegate( | 4831   MHTMLPartsGenerationDelegate delegate( | 
| 4832       params, &digests_of_uris_of_serialized_resources); | 4832       params, &digests_of_uris_of_serialized_resources); | 
| 4833 | 4833 | 
| 4834   // Generate MHTML header if needed. | 4834   // Generate MHTML header if needed. | 
| 4835   if (IsMainFrame()) { | 4835   if (IsMainFrame()) { | 
| 4836     data = | 4836     data = | 
| 4837         WebPageSerializer::generateMHTMLHeader(mhtml_boundary, GetWebFrame()); | 4837         WebFrameSerializer::generateMHTMLHeader(mhtml_boundary, GetWebFrame()); | 
| 4838     if (file.WriteAtCurrentPos(data.data(), data.size()) < 0) { | 4838     if (file.WriteAtCurrentPos(data.data(), data.size()) < 0) { | 
| 4839       success = false; | 4839       success = false; | 
| 4840     } | 4840     } | 
| 4841   } | 4841   } | 
| 4842 | 4842 | 
| 4843   // Generate MHTML parts. | 4843   // Generate MHTML parts. | 
| 4844   if (success) { | 4844   if (success) { | 
| 4845     data = WebPageSerializer::generateMHTMLParts(mhtml_boundary, GetWebFrame(), | 4845     data = WebFrameSerializer::generateMHTMLParts(mhtml_boundary, GetWebFrame(), | 
| 4846                                                  false, &delegate); | 4846                                                   false, &delegate); | 
| 4847     // TODO(jcivelli): write the chunks in deferred tasks to give a chance to | 4847     // TODO(jcivelli): write the chunks in deferred tasks to give a chance to | 
| 4848     //                 the message loop to process other events. | 4848     //                 the message loop to process other events. | 
| 4849     if (file.WriteAtCurrentPos(data.data(), data.size()) < 0) { | 4849     if (file.WriteAtCurrentPos(data.data(), data.size()) < 0) { | 
| 4850       success = false; | 4850       success = false; | 
| 4851     } | 4851     } | 
| 4852   } | 4852   } | 
| 4853 | 4853 | 
| 4854   // Generate MHTML footer if needed. | 4854   // Generate MHTML footer if needed. | 
| 4855   if (success && params.is_last_frame) { | 4855   if (success && params.is_last_frame) { | 
| 4856     data = WebPageSerializer::generateMHTMLFooter(mhtml_boundary); | 4856     data = WebFrameSerializer::generateMHTMLFooter(mhtml_boundary); | 
| 4857     if (file.WriteAtCurrentPos(data.data(), data.size()) < 0) { | 4857     if (file.WriteAtCurrentPos(data.data(), data.size()) < 0) { | 
| 4858       success = false; | 4858       success = false; | 
| 4859     } | 4859     } | 
| 4860   } | 4860   } | 
| 4861 | 4861 | 
| 4862   // Cleanup and notify the browser process about completion. | 4862   // Cleanup and notify the browser process about completion. | 
| 4863   file.Close();  // Need to flush file contents before sending IPC response. | 4863   file.Close();  // Need to flush file contents before sending IPC response. | 
| 4864   Send(new FrameHostMsg_SerializeAsMHTMLResponse( | 4864   Send(new FrameHostMsg_SerializeAsMHTMLResponse( | 
| 4865       routing_id_, params.job_id, success, | 4865       routing_id_, params.job_id, success, | 
| 4866       digests_of_uris_of_serialized_resources)); | 4866       digests_of_uris_of_serialized_resources)); | 
| (...skipping 817 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 5684       media::ConvertToSwitchOutputDeviceCB(web_callbacks); | 5684       media::ConvertToSwitchOutputDeviceCB(web_callbacks); | 
| 5685   scoped_refptr<media::AudioOutputDevice> device = | 5685   scoped_refptr<media::AudioOutputDevice> device = | 
| 5686       AudioDeviceFactory::NewOutputDevice(routing_id_, 0, sink_id.utf8(), | 5686       AudioDeviceFactory::NewOutputDevice(routing_id_, 0, sink_id.utf8(), | 
| 5687                                           security_origin); | 5687                                           security_origin); | 
| 5688   media::OutputDeviceStatus status = device->GetDeviceStatus(); | 5688   media::OutputDeviceStatus status = device->GetDeviceStatus(); | 
| 5689   device->Stop(); | 5689   device->Stop(); | 
| 5690   callback.Run(status); | 5690   callback.Run(status); | 
| 5691 } | 5691 } | 
| 5692 | 5692 | 
| 5693 }  // namespace content | 5693 }  // namespace content | 
| OLD | NEW | 
|---|