OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |