Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: third_party/WebKit/Source/platform/mhtml/MHTMLArchive.cpp

Issue 2379823003: Move MHTML file writing out of the renderer main thread. (Closed)
Patch Set: Address reviewer comments. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 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 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 #if OS(ANDROID) 103 #if OS(ANDROID)
104 if (url.protocolIs("content")) 104 if (url.protocolIs("content"))
105 return true; 105 return true;
106 #endif 106 #endif
107 return false; 107 return false;
108 } 108 }
109 109
110 void MHTMLArchive::generateMHTMLHeader(const String& boundary, 110 void MHTMLArchive::generateMHTMLHeader(const String& boundary,
111 const String& title, 111 const String& title,
112 const String& mimeType, 112 const String& mimeType,
113 SharedBuffer& outputBuffer) { 113 Vector<char>& outputBuffer) {
114 ASSERT(!boundary.isEmpty()); 114 ASSERT(!boundary.isEmpty());
115 ASSERT(!mimeType.isEmpty()); 115 ASSERT(!mimeType.isEmpty());
116 116
117 DateComponents now; 117 DateComponents now;
118 now.setMillisecondsSinceEpochForDateTime(currentTimeMS()); 118 now.setMillisecondsSinceEpochForDateTime(currentTimeMS());
119 // TODO(lukasza): Passing individual date/time components seems fragile. 119 // TODO(lukasza): Passing individual date/time components seems fragile.
120 String dateString = makeRFC2822DateString( 120 String dateString = makeRFC2822DateString(
121 now.weekDay(), now.monthDay(), now.month(), now.fullYear(), now.hour(), 121 now.weekDay(), now.monthDay(), now.month(), now.fullYear(), now.hour(),
122 now.minute(), now.second(), 0); 122 now.minute(), now.second(), 0);
123 123
(...skipping 18 matching lines...) Expand all
142 ASSERT(stringBuilder.toString().containsOnlyASCII()); 142 ASSERT(stringBuilder.toString().containsOnlyASCII());
143 CString asciiString = stringBuilder.toString().utf8(); 143 CString asciiString = stringBuilder.toString().utf8();
144 144
145 outputBuffer.append(asciiString.data(), asciiString.length()); 145 outputBuffer.append(asciiString.data(), asciiString.length());
146 } 146 }
147 147
148 void MHTMLArchive::generateMHTMLPart(const String& boundary, 148 void MHTMLArchive::generateMHTMLPart(const String& boundary,
149 const String& contentID, 149 const String& contentID,
150 EncodingPolicy encodingPolicy, 150 EncodingPolicy encodingPolicy,
151 const SerializedResource& resource, 151 const SerializedResource& resource,
152 SharedBuffer& outputBuffer) { 152 Vector<char>& outputBuffer) {
153 ASSERT(!boundary.isEmpty()); 153 ASSERT(!boundary.isEmpty());
154 ASSERT(contentID.isEmpty() || contentID[0] == '<'); 154 ASSERT(contentID.isEmpty() || contentID[0] == '<');
155 155
156 StringBuilder stringBuilder; 156 StringBuilder stringBuilder;
157 stringBuilder.append("--"); 157 stringBuilder.append("--");
158 stringBuilder.append(boundary); 158 stringBuilder.append(boundary);
159 stringBuilder.append("\r\n"); 159 stringBuilder.append("\r\n");
160 160
161 stringBuilder.append("Content-Type: "); 161 stringBuilder.append("Content-Type: ");
162 stringBuilder.append(resource.mimeType); 162 stringBuilder.append(resource.mimeType);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 std::min(encodedDataLength - index, maximumLineLength); 222 std::min(encodedDataLength - index, maximumLineLength);
223 outputBuffer.append(encodedData.data() + index, lineLength); 223 outputBuffer.append(encodedData.data() + index, lineLength);
224 outputBuffer.append("\r\n", 2u); 224 outputBuffer.append("\r\n", 2u);
225 index += maximumLineLength; 225 index += maximumLineLength;
226 } while (index < encodedDataLength); 226 } while (index < encodedDataLength);
227 } 227 }
228 } 228 }
229 } 229 }
230 230
231 void MHTMLArchive::generateMHTMLFooter(const String& boundary, 231 void MHTMLArchive::generateMHTMLFooter(const String& boundary,
232 SharedBuffer& outputBuffer) { 232 Vector<char>& outputBuffer) {
233 ASSERT(!boundary.isEmpty()); 233 ASSERT(!boundary.isEmpty());
234 CString asciiString = String("--" + boundary + "--\r\n").utf8(); 234 CString asciiString = String("--" + boundary + "--\r\n").utf8();
235 outputBuffer.append(asciiString.data(), asciiString.length()); 235 outputBuffer.append(asciiString.data(), asciiString.length());
236 } 236 }
237 237
238 void MHTMLArchive::setMainResource(ArchiveResource* mainResource) { 238 void MHTMLArchive::setMainResource(ArchiveResource* mainResource) {
239 m_mainResource = mainResource; 239 m_mainResource = mainResource;
240 } 240 }
241 241
242 void MHTMLArchive::addSubresource(ArchiveResource* resource) { 242 void MHTMLArchive::addSubresource(ArchiveResource* resource) {
243 const KURL& url = resource->url(); 243 const KURL& url = resource->url();
244 m_subresources.set(url, resource); 244 m_subresources.set(url, resource);
245 KURL cidURI = MHTMLParser::convertContentIDToURI(resource->contentID()); 245 KURL cidURI = MHTMLParser::convertContentIDToURI(resource->contentID());
246 if (cidURI.isValid()) 246 if (cidURI.isValid())
247 m_subresources.set(cidURI, resource); 247 m_subresources.set(cidURI, resource);
248 } 248 }
249 249
250 ArchiveResource* MHTMLArchive::subresourceForURL(const KURL& url) const { 250 ArchiveResource* MHTMLArchive::subresourceForURL(const KURL& url) const {
251 return m_subresources.get(url.getString()); 251 return m_subresources.get(url.getString());
252 } 252 }
253 253
254 DEFINE_TRACE(MHTMLArchive) { 254 DEFINE_TRACE(MHTMLArchive) {
255 visitor->trace(m_mainResource); 255 visitor->trace(m_mainResource);
256 visitor->trace(m_subresources); 256 visitor->trace(m_subresources);
257 } 257 }
258 258
259 } // namespace blink 259 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/platform/mhtml/MHTMLArchive.h ('k') | third_party/WebKit/Source/web/WebFrameSerializer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698