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

Side by Side Diff: Source/core/inspector/InspectorPageAgent.cpp

Issue 23658039: [ABANDONED] Get content of resources from Blob when the downloadToFile option is enabled (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 3 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 29 matching lines...) Expand all
40 #include "core/dom/Document.h" 40 #include "core/dom/Document.h"
41 #include "core/dom/UserGestureIndicator.h" 41 #include "core/dom/UserGestureIndicator.h"
42 #include "core/fetch/CSSStyleSheetResource.h" 42 #include "core/fetch/CSSStyleSheetResource.h"
43 #include "core/fetch/FontResource.h" 43 #include "core/fetch/FontResource.h"
44 #include "core/fetch/ImageResource.h" 44 #include "core/fetch/ImageResource.h"
45 #include "core/fetch/MemoryCache.h" 45 #include "core/fetch/MemoryCache.h"
46 #include "core/fetch/Resource.h" 46 #include "core/fetch/Resource.h"
47 #include "core/fetch/ResourceFetcher.h" 47 #include "core/fetch/ResourceFetcher.h"
48 #include "core/fetch/ScriptResource.h" 48 #include "core/fetch/ScriptResource.h"
49 #include "core/fetch/TextResourceDecoder.h" 49 #include "core/fetch/TextResourceDecoder.h"
50 #include "core/fileapi/Blob.h"
51 #include "core/fileapi/FileReaderLoader.h"
52 #include "core/fileapi/FileReaderLoaderClient.h"
50 #include "core/html/HTMLFrameOwnerElement.h" 53 #include "core/html/HTMLFrameOwnerElement.h"
51 #include "core/inspector/ContentSearchUtils.h" 54 #include "core/inspector/ContentSearchUtils.h"
52 #include "core/inspector/DOMPatchSupport.h" 55 #include "core/inspector/DOMPatchSupport.h"
53 #include "core/inspector/IdentifiersFactory.h" 56 #include "core/inspector/IdentifiersFactory.h"
54 #include "core/inspector/InjectedScriptManager.h" 57 #include "core/inspector/InjectedScriptManager.h"
55 #include "core/inspector/InspectorClient.h" 58 #include "core/inspector/InspectorClient.h"
56 #include "core/inspector/InspectorInstrumentation.h" 59 #include "core/inspector/InspectorInstrumentation.h"
57 #include "core/inspector/InspectorOverlay.h" 60 #include "core/inspector/InspectorOverlay.h"
58 #include "core/inspector/InspectorState.h" 61 #include "core/inspector/InspectorState.h"
59 #include "core/inspector/InstrumentingAgents.h" 62 #include "core/inspector/InstrumentingAgents.h"
(...skipping 10 matching lines...) Expand all
70 #include "core/platform/JSONValues.h" 73 #include "core/platform/JSONValues.h"
71 #include "core/platform/text/RegularExpression.h" 74 #include "core/platform/text/RegularExpression.h"
72 #include "modules/geolocation/GeolocationController.h" 75 #include "modules/geolocation/GeolocationController.h"
73 #include "weborigin/SecurityOrigin.h" 76 #include "weborigin/SecurityOrigin.h"
74 #include "wtf/CurrentTime.h" 77 #include "wtf/CurrentTime.h"
75 #include "wtf/ListHashSet.h" 78 #include "wtf/ListHashSet.h"
76 #include "wtf/Vector.h" 79 #include "wtf/Vector.h"
77 #include "wtf/text/Base64.h" 80 #include "wtf/text/Base64.h"
78 #include "wtf/text/TextEncoding.h" 81 #include "wtf/text/TextEncoding.h"
79 82
83 typedef WebCore::InspectorBackendDispatcher::PageCommandHandler::GetResourceCont entCallback GetResourceContentCallback;
84
80 namespace WebCore { 85 namespace WebCore {
81 86
82 namespace PageAgentState { 87 namespace PageAgentState {
83 static const char pageAgentEnabled[] = "pageAgentEnabled"; 88 static const char pageAgentEnabled[] = "pageAgentEnabled";
84 static const char pageAgentScriptExecutionDisabled[] = "pageAgentScriptExecution Disabled"; 89 static const char pageAgentScriptExecutionDisabled[] = "pageAgentScriptExecution Disabled";
85 static const char pageAgentScriptsToEvaluateOnLoad[] = "pageAgentScriptsToEvalua teOnLoad"; 90 static const char pageAgentScriptsToEvaluateOnLoad[] = "pageAgentScriptsToEvalua teOnLoad";
86 static const char pageAgentScreenWidthOverride[] = "pageAgentScreenWidthOverride "; 91 static const char pageAgentScreenWidthOverride[] = "pageAgentScreenWidthOverride ";
87 static const char pageAgentScreenHeightOverride[] = "pageAgentScreenHeightOverri de"; 92 static const char pageAgentScreenHeightOverride[] = "pageAgentScreenHeightOverri de";
88 static const char pageAgentFontScaleFactorOverride[] = "pageAgentFontScaleFactor Override"; 93 static const char pageAgentFontScaleFactorOverride[] = "pageAgentFontScaleFactor Override";
89 static const char pageAgentFitWindow[] = "pageAgentFitWindow"; 94 static const char pageAgentFitWindow[] = "pageAgentFitWindow";
90 static const char pageAgentShowFPSCounter[] = "pageAgentShowFPSCounter"; 95 static const char pageAgentShowFPSCounter[] = "pageAgentShowFPSCounter";
91 static const char pageAgentContinuousPaintingEnabled[] = "pageAgentContinuousPai ntingEnabled"; 96 static const char pageAgentContinuousPaintingEnabled[] = "pageAgentContinuousPai ntingEnabled";
92 static const char pageAgentShowPaintRects[] = "pageAgentShowPaintRects"; 97 static const char pageAgentShowPaintRects[] = "pageAgentShowPaintRects";
93 static const char pageAgentShowDebugBorders[] = "pageAgentShowDebugBorders"; 98 static const char pageAgentShowDebugBorders[] = "pageAgentShowDebugBorders";
94 static const char pageAgentShowScrollBottleneckRects[] = "pageAgentShowScrollBot tleneckRects"; 99 static const char pageAgentShowScrollBottleneckRects[] = "pageAgentShowScrollBot tleneckRects";
95 static const char touchEventEmulationEnabled[] = "touchEventEmulationEnabled"; 100 static const char touchEventEmulationEnabled[] = "touchEventEmulationEnabled";
96 static const char pageAgentEmulatedMedia[] = "pageAgentEmulatedMedia"; 101 static const char pageAgentEmulatedMedia[] = "pageAgentEmulatedMedia";
97 static const char showSizeOnResize[] = "showSizeOnResize"; 102 static const char showSizeOnResize[] = "showSizeOnResize";
98 static const char showGridOnResize[] = "showGridOnResize"; 103 static const char showGridOnResize[] = "showGridOnResize";
99 static const char forceCompositingMode[] = "forceCompositingMode"; 104 static const char forceCompositingMode[] = "forceCompositingMode";
100 } 105 }
101 106
102 namespace { 107 namespace {
103 108
109 class InspectorPageFileReaderLoaderClient : public FileReaderLoaderClient {
110 WTF_MAKE_NONCOPYABLE(InspectorPageFileReaderLoaderClient);
111 public:
112 InspectorPageFileReaderLoaderClient(PassRefPtr<GetResourceContentCallback> c allback)
113 : m_callback(callback) { }
114
115 void didStartLoading()
116 {
117 ASSERT(m_loader);
118 }
119
120 void didReceiveData()
121 {
122 ASSERT(m_loader);
123 }
124
125 void didFinishLoading()
126 {
127 ASSERT(m_loader);
128 if (!m_decoder) {
129 m_callback->sendSuccess(String(""), false);
130 } else {
131 RefPtr<ArrayBuffer> buffer = m_loader->arrayBufferResult();
132 String content = m_decoder->decode(static_cast<const char*>(buffer-> data()), buffer->byteLength());
133 m_callback->sendSuccess(content + m_decoder->flush(), false);
134 }
135 dispose();
136 }
137
138 void didFail(FileError::ErrorCode errorCode)
139 {
140 m_callback->sendFailure("Failed to load Blob: error code = " + String::n umber(errorCode)); // FIXME: Generate human-friendly reason message.
141 dispose();
142 }
143
144 void setLoader(PassOwnPtr<FileReaderLoader> loader)
145 {
146 m_loader = loader;
147 }
148
149 void start(Document* document, PassRefPtr<Blob> prpBlob, const String& textE ncodingName)
150 {
151 ASSERT(m_loader);
152 RefPtr<Blob> blob = prpBlob;
153 m_decoder = InspectorPageAgent::createXHRTextDecoder(blob->type(), textE ncodingName);
154 m_loader->start(document, *blob);
155 }
156
157 private:
158 void dispose()
159 {
160 m_loader.clear();
161 delete this;
162 }
163
164 OwnPtr<FileReaderLoader> m_loader;
165 RefPtr<GetResourceContentCallback> m_callback;
166 RefPtr<TextResourceDecoder> m_decoder;
167 };
168
104 KURL urlWithoutFragment(const KURL& url) 169 KURL urlWithoutFragment(const KURL& url)
105 { 170 {
106 KURL result = url; 171 KURL result = url;
107 result.removeFragmentIdentifier(); 172 result.removeFragmentIdentifier();
108 return result; 173 return result;
109 } 174 }
110 175
111 } 176 }
112 177
113 static bool decodeBuffer(const char* buffer, unsigned size, const String& textEn codingName, String* result) 178 static bool decodeBuffer(const char* buffer, unsigned size, const String& textEn codingName, String* result)
114 { 179 {
115 if (buffer) { 180 if (buffer) {
116 WTF::TextEncoding encoding(textEncodingName); 181 WTF::TextEncoding encoding(textEncodingName);
117 if (!encoding.isValid()) 182 if (!encoding.isValid())
118 encoding = WindowsLatin1Encoding(); 183 encoding = WindowsLatin1Encoding();
119 *result = encoding.decode(buffer, size); 184 *result = encoding.decode(buffer, size);
120 return true; 185 return true;
121 } 186 }
122 return false; 187 return false;
123 } 188 }
124 189
125 static bool prepareResourceBuffer(Resource* cachedResource, bool* hasZeroSize) 190 static bool prepareResourceBuffer(Resource* cachedResource, bool* hasZeroSize, b ool* hasBlob)
126 { 191 {
127 *hasZeroSize = false; 192 *hasZeroSize = false;
193 *hasBlob = false;
128 if (!cachedResource) 194 if (!cachedResource)
129 return false; 195 return false;
130 196
197 if (!cachedResource->response().downloadedFilePath().isEmpty()) {
198 *hasBlob = true;
199 return true;
200 }
201
131 // Zero-sized resources don't have data at all -- so fake the empty buffer, instead of indicating error by returning 0. 202 // Zero-sized resources don't have data at all -- so fake the empty buffer, instead of indicating error by returning 0.
132 if (!cachedResource->encodedSize()) { 203 if (!cachedResource->encodedSize()) {
133 *hasZeroSize = true; 204 *hasZeroSize = true;
134 return true; 205 return true;
135 } 206 }
136 207
137 if (cachedResource->isPurgeable()) { 208 if (cachedResource->isPurgeable()) {
138 // If the resource is purgeable then make it unpurgeable to get 209 // If the resource is purgeable then make it unpurgeable to get
139 // get its data. This might fail, in which case we return an 210 // get its data. This might fail, in which case we return an
140 // empty String. 211 // empty String.
141 // FIXME: should we do something else in the case of a purged 212 // FIXME: should we do something else in the case of a purged
142 // resource that informs the user why there is no data in the 213 // resource that informs the user why there is no data in the
143 // inspector? 214 // inspector?
144 if (!cachedResource->makePurgeable(false)) 215 if (!cachedResource->makePurgeable(false))
145 return false; 216 return false;
146 } 217 }
147 218
148 return true; 219 return true;
149 } 220 }
150 221
151 static bool hasTextContent(Resource* cachedResource) 222 static bool hasTextContent(Resource* cachedResource)
152 { 223 {
153 InspectorPageAgent::ResourceType type = InspectorPageAgent::cachedResourceTy pe(*cachedResource); 224 InspectorPageAgent::ResourceType type = InspectorPageAgent::cachedResourceTy pe(*cachedResource);
154 return type == InspectorPageAgent::DocumentResource || type == InspectorPage Agent::StylesheetResource || type == InspectorPageAgent::ScriptResource || type == InspectorPageAgent::XHRResource; 225 return type == InspectorPageAgent::DocumentResource || type == InspectorPage Agent::StylesheetResource || type == InspectorPageAgent::ScriptResource || type == InspectorPageAgent::XHRResource;
155 } 226 }
156 227
157 static PassRefPtr<TextResourceDecoder> createXHRTextDecoder(const String& mimeTy pe, const String& textEncodingName) 228 PassRefPtr<TextResourceDecoder> InspectorPageAgent::createXHRTextDecoder(const S tring& mimeType, const String& textEncodingName)
158 { 229 {
159 RefPtr<TextResourceDecoder> decoder; 230 RefPtr<TextResourceDecoder> decoder;
160 if (!textEncodingName.isEmpty()) 231 if (!textEncodingName.isEmpty())
161 decoder = TextResourceDecoder::create("text/plain", textEncodingName); 232 decoder = TextResourceDecoder::create("text/plain", textEncodingName);
162 else if (DOMImplementation::isXMLMIMEType(mimeType.lower())) { 233 else if (DOMImplementation::isXMLMIMEType(mimeType.lower())) {
163 decoder = TextResourceDecoder::create("application/xml"); 234 decoder = TextResourceDecoder::create("application/xml");
164 decoder->useLenientXMLDecoding(); 235 decoder->useLenientXMLDecoding();
165 } else if (equalIgnoringCase(mimeType, "text/html")) 236 } else if (equalIgnoringCase(mimeType, "text/html"))
166 decoder = TextResourceDecoder::create("text/html", "UTF-8"); 237 decoder = TextResourceDecoder::create("text/html", "UTF-8");
167 else 238 else
168 decoder = TextResourceDecoder::create("text/plain", "UTF-8"); 239 decoder = TextResourceDecoder::create("text/plain", "UTF-8");
169 return decoder; 240 return decoder;
170 } 241 }
171 242
172 bool InspectorPageAgent::cachedResourceContent(Resource* cachedResource, String* result, bool* base64Encoded) 243 bool InspectorPageAgent::cachedResourceContentOrBlob(Resource* cachedResource, S tring* result, bool* base64Encoded, RefPtr<Blob>* blob, String* textEncodingName )
173 { 244 {
174 bool hasZeroSize; 245 bool hasZeroSize;
175 bool prepared = prepareResourceBuffer(cachedResource, &hasZeroSize); 246 bool hasBlob;
247 bool prepared = prepareResourceBuffer(cachedResource, &hasZeroSize, &hasBlob );
176 if (!prepared) 248 if (!prepared)
177 return false; 249 return false;
178 250
251 if (hasBlob) {
252 const String& filePath = cachedResource->response().downloadedFilePath() ;
253 OwnPtr<BlobData> blobData = BlobData::create();
254 blobData->appendFile(filePath);
255 blobData->setContentType(cachedResource->response().mimeType());
256 *blob = Blob::create(blobData.release(), cachedResource->encodedSize());
257 *textEncodingName = cachedResource->response().textEncodingName();
258 return true;
259 }
260
179 *base64Encoded = !hasTextContent(cachedResource); 261 *base64Encoded = !hasTextContent(cachedResource);
180 if (*base64Encoded) { 262 if (*base64Encoded) {
181 RefPtr<SharedBuffer> buffer = hasZeroSize ? SharedBuffer::create() : cac hedResource->resourceBuffer(); 263 RefPtr<SharedBuffer> buffer = hasZeroSize ? SharedBuffer::create() : cac hedResource->resourceBuffer();
182 264
183 if (!buffer) 265 if (!buffer)
184 return false; 266 return false;
185 267
186 *result = base64Encode(buffer->data(), buffer->size()); 268 *result = base64Encode(buffer->data(), buffer->size());
187 return true; 269 return true;
188 } 270 }
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 319
238 return decodeBuffer(data, size, textEncodingName, result); 320 return decodeBuffer(data, size, textEncodingName, result);
239 } 321 }
240 322
241 PassOwnPtr<InspectorPageAgent> InspectorPageAgent::create(InstrumentingAgents* i nstrumentingAgents, Page* page, InspectorCompositeState* state, InjectedScriptMa nager* injectedScriptManager, InspectorClient* client, InspectorOverlay* overlay ) 323 PassOwnPtr<InspectorPageAgent> InspectorPageAgent::create(InstrumentingAgents* i nstrumentingAgents, Page* page, InspectorCompositeState* state, InjectedScriptMa nager* injectedScriptManager, InspectorClient* client, InspectorOverlay* overlay )
242 { 324 {
243 return adoptPtr(new InspectorPageAgent(instrumentingAgents, page, state, inj ectedScriptManager, client, overlay)); 325 return adoptPtr(new InspectorPageAgent(instrumentingAgents, page, state, inj ectedScriptManager, client, overlay));
244 } 326 }
245 327
246 // static 328 // static
247 void InspectorPageAgent::resourceContent(ErrorString* errorString, Frame* frame, const KURL& url, String* result, bool* base64Encoded) 329 void InspectorPageAgent::resourceContentOrBlob(ErrorString* errorString, Frame* frame, const KURL& url, String* result, bool* base64Encoded, RefPtr<Blob>* blob, String* textEncodingName)
248 { 330 {
249 DocumentLoader* loader = assertDocumentLoader(errorString, frame); 331 DocumentLoader* loader = assertDocumentLoader(errorString, frame);
250 if (!loader) 332 if (!loader)
251 return; 333 return;
252 if (!cachedResourceContent(cachedResource(frame, url), result, base64Encoded )) 334 if (!cachedResourceContentOrBlob(cachedResource(frame, url), result, base64E ncoded, blob, textEncodingName))
253 *errorString = "No resource with given URL found"; 335 *errorString = "No resource with given URL found";
254 } 336 }
255 337
256 Resource* InspectorPageAgent::cachedResource(Frame* frame, const KURL& url) 338 Resource* InspectorPageAgent::cachedResource(Frame* frame, const KURL& url)
257 { 339 {
258 Resource* cachedResource = frame->document()->fetcher()->cachedResource(url) ; 340 Resource* cachedResource = frame->document()->fetcher()->cachedResource(url) ;
259 if (!cachedResource) 341 if (!cachedResource)
260 cachedResource = memoryCache()->resourceForURL(url); 342 cachedResource = memoryCache()->resourceForURL(url);
261 return cachedResource; 343 return cachedResource;
262 } 344 }
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 KURL parsedURL(ParsedURLString, url); 644 KURL parsedURL(ParsedURLString, url);
563 for (Frame* frame = m_page->mainFrame(); frame; frame = frame->tree()->trave rseNext(m_page->mainFrame())) 645 for (Frame* frame = m_page->mainFrame(); frame; frame = frame->tree()->trave rseNext(m_page->mainFrame()))
564 WebCore::deleteCookie(frame->document(), parsedURL, cookieName); 646 WebCore::deleteCookie(frame->document(), parsedURL, cookieName);
565 } 647 }
566 648
567 void InspectorPageAgent::getResourceTree(ErrorString*, RefPtr<TypeBuilder::Page: :FrameResourceTree>& object) 649 void InspectorPageAgent::getResourceTree(ErrorString*, RefPtr<TypeBuilder::Page: :FrameResourceTree>& object)
568 { 650 {
569 object = buildObjectForFrameTree(m_page->mainFrame()); 651 object = buildObjectForFrameTree(m_page->mainFrame());
570 } 652 }
571 653
572 void InspectorPageAgent::getResourceContent(ErrorString* errorString, const Stri ng& frameId, const String& url, String* content, bool* base64Encoded) 654 void InspectorPageAgent::getResourceContent(ErrorString* errorString, const Stri ng& frameId, const String& url, PassRefPtr<GetResourceContentCallback> prpCallba ck)
573 { 655 {
656 RefPtr<GetResourceContentCallback> callback = prpCallback;
657 if (!callback->isActive())
658 return;
659
574 Frame* frame = assertFrame(errorString, frameId); 660 Frame* frame = assertFrame(errorString, frameId);
575 if (!frame) 661 if (!frame)
576 return; 662 return;
577 resourceContent(errorString, frame, KURL(ParsedURLString, url), content, bas e64Encoded); 663
664 Document* document = frame->document();
665 if (!document) {
666 *errorString = "No Document instance for the specified frame";
667 return;
668 }
669
670 String content;
671 bool base64Encoded;
672 RefPtr<Blob> blob;
673 String textEncodingName;
674 resourceContentOrBlob(errorString, frame, KURL(ParsedURLString, url), &conte nt, &base64Encoded, &blob, &textEncodingName);
675 if (!errorString->isEmpty())
676 return;
677
678 if (blob) {
679 InspectorPageFileReaderLoaderClient* client = new InspectorPageFileReade rLoaderClient(callback);
680 OwnPtr<FileReaderLoader> loader = adoptPtr(new FileReaderLoader(FileRead erLoader::ReadAsArrayBuffer, client));
681 client->setLoader(loader.release());
682 client->start(document, blob.release(), textEncodingName);
683 } else {
684 callback->sendSuccess(content, base64Encoded);
685 }
578 } 686 }
579 687
580 static bool textContentForResource(Resource* cachedResource, String* result) 688 static bool textContentForResource(Resource* cachedResource, String* result)
581 { 689 {
582 if (hasTextContent(cachedResource)) { 690 if (hasTextContent(cachedResource)) {
583 String content; 691 String content;
584 bool base64Encoded; 692 bool base64Encoded;
585 if (InspectorPageAgent::cachedResourceContent(cachedResource, result, &b ase64Encoded)) { 693 RefPtr<Blob> blob;
694 String textEncodingName;
695 if (InspectorPageAgent::cachedResourceContentOrBlob(cachedResource, resu lt, &base64Encoded, &blob, &textEncodingName)) {
586 ASSERT(!base64Encoded); 696 ASSERT(!base64Encoded);
587 return true; 697 if (!blob)
698 return true;
588 } 699 }
589 } 700 }
590 return false; 701 return false;
591 } 702 }
592 703
593 void InspectorPageAgent::searchInResource(ErrorString*, const String& frameId, c onst String& url, const String& query, const bool* const optionalCaseSensitive, const bool* const optionalIsRegex, RefPtr<TypeBuilder::Array<TypeBuilder::Page:: SearchMatch> >& results) 704 void InspectorPageAgent::searchInResource(ErrorString*, const String& frameId, c onst String& url, const String& query, const bool* const optionalCaseSensitive, const bool* const optionalIsRegex, RefPtr<TypeBuilder::Array<TypeBuilder::Page:: SearchMatch> >& results)
594 { 705 {
595 results = TypeBuilder::Array<TypeBuilder::Page::SearchMatch>::create(); 706 results = TypeBuilder::Array<TypeBuilder::Page::SearchMatch>::create();
596 707
597 bool isRegex = optionalIsRegex ? *optionalIsRegex : false; 708 bool isRegex = optionalIsRegex ? *optionalIsRegex : false;
(...skipping 698 matching lines...) Expand 10 before | Expand all | Expand 10 after
1296 } 1407 }
1297 1408
1298 void InspectorPageAgent::setShowViewportSizeOnResize(ErrorString*, bool show, co nst bool* showGrid) 1409 void InspectorPageAgent::setShowViewportSizeOnResize(ErrorString*, bool show, co nst bool* showGrid)
1299 { 1410 {
1300 m_state->setBoolean(PageAgentState::showSizeOnResize, show); 1411 m_state->setBoolean(PageAgentState::showSizeOnResize, show);
1301 m_state->setBoolean(PageAgentState::showGridOnResize, showGrid && *showGrid) ; 1412 m_state->setBoolean(PageAgentState::showGridOnResize, showGrid && *showGrid) ;
1302 } 1413 }
1303 1414
1304 } // namespace WebCore 1415 } // namespace WebCore
1305 1416
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698