| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 WebFrameSerializerCacheControlPolicy::FailForNoStoreMainFrame); | 180 WebFrameSerializerCacheControlPolicy::FailForNoStoreMainFrame); |
| 181 | 181 |
| 182 if (!needToCheckNoStore) | 182 if (!needToCheckNoStore) |
| 183 return true; | 183 return true; |
| 184 | 184 |
| 185 return !cacheControlNoStoreHeaderPresent(*webLocalFrameImpl); | 185 return !cacheControlNoStoreHeaderPresent(*webLocalFrameImpl); |
| 186 } | 186 } |
| 187 | 187 |
| 188 } // namespace | 188 } // namespace |
| 189 | 189 |
| 190 WebData WebFrameSerializer::generateMHTMLHeader( | 190 WebThreadSafeData WebFrameSerializer::generateMHTMLHeader( |
| 191 const WebString& boundary, | 191 const WebString& boundary, |
| 192 WebLocalFrame* frame, | 192 WebLocalFrame* frame, |
| 193 MHTMLPartsGenerationDelegate* delegate) { | 193 MHTMLPartsGenerationDelegate* delegate) { |
| 194 TRACE_EVENT0("page-serialization", "WebFrameSerializer::generateMHTMLHeader"); | 194 TRACE_EVENT0("page-serialization", "WebFrameSerializer::generateMHTMLHeader"); |
| 195 DCHECK(frame); | 195 DCHECK(frame); |
| 196 DCHECK(delegate); | 196 DCHECK(delegate); |
| 197 | 197 |
| 198 if (!frameShouldBeSerializedAsMHTML(frame, delegate->cacheControlPolicy())) | 198 if (!frameShouldBeSerializedAsMHTML(frame, delegate->cacheControlPolicy())) |
| 199 return WebData(); | 199 return WebThreadSafeData(); |
| 200 | 200 |
| 201 WebLocalFrameImpl* webLocalFrameImpl = toWebLocalFrameImpl(frame); | 201 WebLocalFrameImpl* webLocalFrameImpl = toWebLocalFrameImpl(frame); |
| 202 DCHECK(webLocalFrameImpl); | 202 DCHECK(webLocalFrameImpl); |
| 203 | 203 |
| 204 Document* document = webLocalFrameImpl->frame()->document(); | 204 Document* document = webLocalFrameImpl->frame()->document(); |
| 205 | 205 |
| 206 RefPtr<SharedBuffer> buffer = SharedBuffer::create(); | 206 RefPtr<RawData> buffer = RawData::create(); |
| 207 MHTMLArchive::generateMHTMLHeader(boundary, document->title(), | 207 MHTMLArchive::generateMHTMLHeader(boundary, document->title(), |
| 208 document->suggestedMIMEType(), *buffer); | 208 document->suggestedMIMEType(), |
| 209 *buffer->mutableData()); |
| 209 return buffer.release(); | 210 return buffer.release(); |
| 210 } | 211 } |
| 211 | 212 |
| 212 WebData WebFrameSerializer::generateMHTMLParts( | 213 WebThreadSafeData WebFrameSerializer::generateMHTMLParts( |
| 213 const WebString& boundary, | 214 const WebString& boundary, |
| 214 WebLocalFrame* webFrame, | 215 WebLocalFrame* webFrame, |
| 215 MHTMLPartsGenerationDelegate* webDelegate) { | 216 MHTMLPartsGenerationDelegate* webDelegate) { |
| 216 TRACE_EVENT0("page-serialization", "WebFrameSerializer::generateMHTMLParts"); | 217 TRACE_EVENT0("page-serialization", "WebFrameSerializer::generateMHTMLParts"); |
| 217 DCHECK(webFrame); | 218 DCHECK(webFrame); |
| 218 DCHECK(webDelegate); | 219 DCHECK(webDelegate); |
| 219 | 220 |
| 220 if (!frameShouldBeSerializedAsMHTML(webFrame, | 221 if (!frameShouldBeSerializedAsMHTML(webFrame, |
| 221 webDelegate->cacheControlPolicy())) | 222 webDelegate->cacheControlPolicy())) |
| 222 return WebData(); | 223 return WebThreadSafeData(); |
| 223 | 224 |
| 224 // Translate arguments from public to internal blink APIs. | 225 // Translate arguments from public to internal blink APIs. |
| 225 LocalFrame* frame = toWebLocalFrameImpl(webFrame)->frame(); | 226 LocalFrame* frame = toWebLocalFrameImpl(webFrame)->frame(); |
| 226 MHTMLArchive::EncodingPolicy encodingPolicy = | 227 MHTMLArchive::EncodingPolicy encodingPolicy = |
| 227 webDelegate->useBinaryEncoding() | 228 webDelegate->useBinaryEncoding() |
| 228 ? MHTMLArchive::EncodingPolicy::UseBinaryEncoding | 229 ? MHTMLArchive::EncodingPolicy::UseBinaryEncoding |
| 229 : MHTMLArchive::EncodingPolicy::UseDefaultEncoding; | 230 : MHTMLArchive::EncodingPolicy::UseDefaultEncoding; |
| 230 | 231 |
| 231 // Serialize. | 232 // Serialize. |
| 232 TRACE_EVENT_BEGIN0("page-serialization", | 233 TRACE_EVENT_BEGIN0("page-serialization", |
| 233 "WebFrameSerializer::generateMHTMLParts serializing"); | 234 "WebFrameSerializer::generateMHTMLParts serializing"); |
| 234 Vector<SerializedResource> resources; | 235 Vector<SerializedResource> resources; |
| 235 { | 236 { |
| 236 SCOPED_BLINK_UMA_HISTOGRAM_TIMER( | 237 SCOPED_BLINK_UMA_HISTOGRAM_TIMER( |
| 237 "PageSerialization.MhtmlGeneration.SerializationTime.SingleFrame"); | 238 "PageSerialization.MhtmlGeneration.SerializationTime.SingleFrame"); |
| 238 MHTMLFrameSerializerDelegate coreDelegate(*webDelegate); | 239 MHTMLFrameSerializerDelegate coreDelegate(*webDelegate); |
| 239 FrameSerializer serializer(resources, coreDelegate); | 240 FrameSerializer serializer(resources, coreDelegate); |
| 240 serializer.serializeFrame(*frame); | 241 serializer.serializeFrame(*frame); |
| 241 } | 242 } |
| 242 TRACE_EVENT_END1("page-serialization", | 243 TRACE_EVENT_END1("page-serialization", |
| 243 "WebFrameSerializer::generateMHTMLParts serializing", | 244 "WebFrameSerializer::generateMHTMLParts serializing", |
| 244 "resource count", | 245 "resource count", |
| 245 static_cast<unsigned long long>(resources.size())); | 246 static_cast<unsigned long long>(resources.size())); |
| 246 | 247 |
| 247 // Get Content-ID for the frame being serialized. | 248 // Get Content-ID for the frame being serialized. |
| 248 String frameContentID = webDelegate->getContentID(webFrame); | 249 String frameContentID = webDelegate->getContentID(webFrame); |
| 249 | 250 |
| 250 // Encode serializer's output as MHTML. | 251 // Encode serializer's output as MHTML. |
| 251 RefPtr<SharedBuffer> output = SharedBuffer::create(); | 252 RefPtr<RawData> output = RawData::create(); |
| 252 { | 253 { |
| 253 SCOPED_BLINK_UMA_HISTOGRAM_TIMER( | 254 SCOPED_BLINK_UMA_HISTOGRAM_TIMER( |
| 254 "PageSerialization.MhtmlGeneration.EncodingTime.SingleFrame"); | 255 "PageSerialization.MhtmlGeneration.EncodingTime.SingleFrame"); |
| 255 bool isFirstResource = true; | 256 bool isFirstResource = true; |
| 256 for (const SerializedResource& resource : resources) { | 257 for (const SerializedResource& resource : resources) { |
| 257 TRACE_EVENT0("page-serialization", | 258 TRACE_EVENT0("page-serialization", |
| 258 "WebFrameSerializer::generateMHTMLParts encoding"); | 259 "WebFrameSerializer::generateMHTMLParts encoding"); |
| 259 // Frame is the 1st resource (see FrameSerializer::serializeFrame doc | 260 // Frame is the 1st resource (see FrameSerializer::serializeFrame doc |
| 260 // comment). Frames get a Content-ID header. | 261 // comment). Frames get a Content-ID header. |
| 261 String contentID = isFirstResource ? frameContentID : String(); | 262 String contentID = isFirstResource ? frameContentID : String(); |
| 262 | 263 |
| 263 MHTMLArchive::generateMHTMLPart(boundary, contentID, encodingPolicy, | 264 MHTMLArchive::generateMHTMLPart(boundary, contentID, encodingPolicy, |
| 264 resource, *output); | 265 resource, *output->mutableData()); |
| 265 | 266 |
| 266 isFirstResource = false; | 267 isFirstResource = false; |
| 267 } | 268 } |
| 268 } | 269 } |
| 269 return output.release(); | 270 return output.release(); |
| 270 } | 271 } |
| 271 | 272 |
| 272 WebData WebFrameSerializer::generateMHTMLFooter(const WebString& boundary) { | 273 WebThreadSafeData WebFrameSerializer::generateMHTMLFooter( |
| 274 const WebString& boundary) { |
| 273 TRACE_EVENT0("page-serialization", "WebFrameSerializer::generateMHTMLFooter"); | 275 TRACE_EVENT0("page-serialization", "WebFrameSerializer::generateMHTMLFooter"); |
| 274 RefPtr<SharedBuffer> buffer = SharedBuffer::create(); | 276 RefPtr<RawData> buffer = RawData::create(); |
| 275 MHTMLArchive::generateMHTMLFooter(boundary, *buffer); | 277 MHTMLArchive::generateMHTMLFooter(boundary, *buffer->mutableData()); |
| 276 return buffer.release(); | 278 return buffer.release(); |
| 277 } | 279 } |
| 278 | 280 |
| 279 bool WebFrameSerializer::serialize( | 281 bool WebFrameSerializer::serialize( |
| 280 WebLocalFrame* frame, | 282 WebLocalFrame* frame, |
| 281 WebFrameSerializerClient* client, | 283 WebFrameSerializerClient* client, |
| 282 WebFrameSerializer::LinkRewritingDelegate* delegate) { | 284 WebFrameSerializer::LinkRewritingDelegate* delegate) { |
| 283 WebFrameSerializerImpl serializerImpl(frame, client, delegate); | 285 WebFrameSerializerImpl serializerImpl(frame, client, delegate); |
| 284 return serializerImpl.serialize(); | 286 return serializerImpl.serialize(); |
| 285 } | 287 } |
| (...skipping 20 matching lines...) Expand all Loading... |
| 306 const WebString& baseTarget) { | 308 const WebString& baseTarget) { |
| 307 // TODO(yosin) We should call |FrameSerializer::baseTagDeclarationOf()|. | 309 // TODO(yosin) We should call |FrameSerializer::baseTagDeclarationOf()|. |
| 308 if (baseTarget.isEmpty()) | 310 if (baseTarget.isEmpty()) |
| 309 return String("<base href=\".\">"); | 311 return String("<base href=\".\">"); |
| 310 String baseString = "<base href=\".\" target=\"" + | 312 String baseString = "<base href=\".\" target=\"" + |
| 311 static_cast<const String&>(baseTarget) + "\">"; | 313 static_cast<const String&>(baseTarget) + "\">"; |
| 312 return baseString; | 314 return baseString; |
| 313 } | 315 } |
| 314 | 316 |
| 315 } // namespace blink | 317 } // namespace blink |
| OLD | NEW |