Changeset 57469 in webkit
- Timestamp:
- Apr 11, 2010 9:54:55 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 2 deleted
- 41 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/Android.mk
r57468 r57469 286 286 loader/DocumentLoader.cpp \ 287 287 loader/DocumentThreadableLoader.cpp \ 288 loader/DocumentWriter.cpp \289 288 loader/FormState.cpp \ 290 289 loader/FrameLoader.cpp \ -
trunk/WebCore/ChangeLog
r57468 r57469 1 2010-04-11 Sheriff Bot <webkit.review.bot@gmail.com> 2 3 Unreviewed, rolling out r57468. 4 http://trac.webkit.org/changeset/57468 5 https://bugs.webkit.org/show_bug.cgi?id=37433 6 7 Broke the world... Must have applied the patch wrong 8 (Requested by abarth on #webkit). 9 10 * Android.mk: 11 * GNUmakefile.am: 12 * WebCore.base.exp: 13 * WebCore.gypi: 14 * WebCore.pro: 15 * WebCore.vcproj/WebCore.vcproj: 16 * WebCore.xcodeproj/project.pbxproj: 17 * bindings/ScriptControllerBase.cpp: 18 (WebCore::ScriptController::executeIfJavaScriptURL): 19 * dom/Document.cpp: 20 (WebCore::Document::close): 21 * dom/ProcessingInstruction.cpp: 22 (WebCore::ProcessingInstruction::checkStyleSheet): 23 * dom/ScriptElement.cpp: 24 (WebCore::ScriptElementData::scriptCharset): 25 * html/HTMLLinkElement.cpp: 26 (WebCore::HTMLLinkElement::process): 27 * loader/DocLoader.cpp: 28 (WebCore::DocLoader::requestPreload): 29 * loader/DocumentLoader.cpp: 30 (WebCore::DocumentLoader::finishedLoading): 31 (WebCore::DocumentLoader::setupForReplaceByMIMEType): 32 * loader/DocumentWriter.cpp: Removed. 33 * loader/DocumentWriter.h: Removed. 34 * loader/FrameLoader.cpp: 35 (WebCore::canReferToParentFrameEncoding): 36 (WebCore::FrameLoader::FrameLoader): 37 (WebCore::FrameLoader::init): 38 (WebCore::FrameLoader::replaceDocument): 39 (WebCore::FrameLoader::clear): 40 (WebCore::FrameLoader::receivedFirstData): 41 (WebCore::FrameLoader::responseMIMEType): 42 (WebCore::FrameLoader::setResponseMIMEType): 43 (WebCore::FrameLoader::begin): 44 (WebCore::FrameLoader::write): 45 (WebCore::FrameLoader::end): 46 (WebCore::FrameLoader::endIfNotLoadingMainResource): 47 (WebCore::FrameLoader::encoding): 48 (WebCore::FrameLoader::setEncoding): 49 (WebCore::FrameLoader::addData): 50 (WebCore::FrameLoader::transitionToCommitted): 51 (WebCore::FrameLoader::open): 52 (WebCore::FrameLoader::finishedLoadingDocument): 53 (WebCore::FrameLoader::addExtraFieldsToRequest): 54 * loader/FrameLoader.h: 55 * loader/MediaDocument.cpp: 56 (WebCore::MediaDocument::replaceMediaElementTimerFired): 57 * loader/PluginDocument.cpp: 58 (WebCore::PluginTokenizer::createDocumentStructure): 59 * platform/network/FormDataBuilder.cpp: 60 (WebCore::FormDataBuilder::dataEncoding): 61 * svg/graphics/SVGImage.cpp: 62 (WebCore::SVGImage::dataChanged): 63 1 64 2010-04-11 Adam Barth <abarth@webkit.org> 2 65 -
trunk/WebCore/GNUmakefile.am
r57468 r57469 1307 1307 WebCore/loader/DocumentThreadableLoader.cpp \ 1308 1308 WebCore/loader/DocumentThreadableLoader.h \ 1309 WebCore/loader/DocumentWriter.cpp \1310 WebCore/loader/DocumentWriter.h \1311 1309 WebCore/loader/EmptyClients.h \ 1312 1310 WebCore/loader/FTPDirectoryDocument.cpp \ -
trunk/WebCore/WebCore.base.exp
r57468 r57469 158 158 __ZN7WebCore11FrameLoader11completeURLERKNS_6StringE 159 159 __ZN7WebCore11FrameLoader11loadArchiveEN3WTF10PassRefPtrINS_7ArchiveEEE 160 __ZN7WebCore11FrameLoader11setEncodingERKNS_6StringEb 160 161 __ZN7WebCore11FrameLoader12shouldReloadERKNS_4KURLES3_ 161 162 __ZN7WebCore11FrameLoader14detachChildrenEv … … 302 303 __ZN7WebCore14DocumentLoaderC2ERKNS_15ResourceRequestERKNS_14SubstituteDataE 303 304 __ZN7WebCore14DocumentLoaderD2Ev 304 __ZN7WebCore14DocumentWriter11setEncodingERKNS_6StringEb305 305 __ZN7WebCore14ResourceHandle12releaseProxyEv 306 306 __ZN7WebCore14ResourceHandle20forceContentSniffingEv … … 814 814 __ZNK7WebCore11FrameLoader15firstLayoutDoneEv 815 815 __ZNK7WebCore11FrameLoader16outgoingReferrerEv 816 __ZNK7WebCore11FrameLoader16responseMIMETypeEv 816 817 __ZNK7WebCore11FrameLoader20activeDocumentLoaderEv 817 818 __ZNK7WebCore11FrameLoader27numPendingOrLoadingRequestsEb -
trunk/WebCore/WebCore.gypi
r57468 r57469 1733 1733 'loader/DocumentThreadableLoader.cpp', 1734 1734 'loader/DocumentThreadableLoader.h', 1735 'loader/DocumentWriter.cpp',1736 'loader/DocumentWriter.h',1737 1735 'loader/EmptyClients.h', 1738 1736 'loader/FTPDirectoryDocument.cpp', -
trunk/WebCore/WebCore.pro
r57468 r57469 735 735 loader/DocumentLoader.cpp \ 736 736 loader/DocumentThreadableLoader.cpp \ 737 loader/DocumentWriter.cpp \738 737 loader/FormState.cpp \ 739 738 loader/FrameLoader.cpp \ -
trunk/WebCore/WebCore.vcproj/WebCore.vcproj
r57468 r57469 21398 21398 </File> 21399 21399 <File 21400 RelativePath="..\loader\DocumentWriter.cpp"21401 >21402 </File>21403 <File21404 RelativePath="..\loader\DocumentWriter.h"21405 >21406 </File>21407 <File21408 21400 RelativePath="..\loader\DocumentThreadableLoader.cpp" 21409 21401 > -
trunk/WebCore/WebCore.xcodeproj/project.pbxproj
r57468 r57469 2483 2483 97059979107D975200A50A7C /* PolicyChecker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97059975107D975200A50A7C /* PolicyChecker.cpp */; }; 2484 2484 9705997A107D975200A50A7C /* PolicyChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = 97059976107D975200A50A7C /* PolicyChecker.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2485 973889A0116EA9DC00ADF313 /* DocumentWriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9738899E116EA9DC00ADF313 /* DocumentWriter.cpp */; };2486 973889A1116EA9DC00ADF313 /* DocumentWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 9738899F116EA9DC00ADF313 /* DocumentWriter.h */; settings = {ATTRIBUTES = (Private, ); }; };2487 2485 973E325610883B7C005BC493 /* ResourceLoadNotifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 973E325410883B7C005BC493 /* ResourceLoadNotifier.cpp */; }; 2488 2486 973E325710883B7C005BC493 /* ResourceLoadNotifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 973E325510883B7C005BC493 /* ResourceLoadNotifier.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 7918 7916 97059975107D975200A50A7C /* PolicyChecker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PolicyChecker.cpp; sourceTree = "<group>"; }; 7919 7917 97059976107D975200A50A7C /* PolicyChecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PolicyChecker.h; sourceTree = "<group>"; }; 7920 9738899E116EA9DC00ADF313 /* DocumentWriter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentWriter.cpp; sourceTree = "<group>"; };7921 9738899F116EA9DC00ADF313 /* DocumentWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentWriter.h; sourceTree = "<group>"; };7922 7918 973E325410883B7C005BC493 /* ResourceLoadNotifier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceLoadNotifier.cpp; sourceTree = "<group>"; }; 7923 7919 973E325510883B7C005BC493 /* ResourceLoadNotifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceLoadNotifier.h; sourceTree = "<group>"; }; … … 15220 15216 0B9056150F2578BE0095FF6A /* DocumentThreadableLoader.cpp */, 15221 15217 0B9056160F2578BE0095FF6A /* DocumentThreadableLoader.h */, 15222 9738899E116EA9DC00ADF313 /* DocumentWriter.cpp */,15223 9738899F116EA9DC00ADF313 /* DocumentWriter.h */,15224 15218 B255990D0D00D8B900BB825C /* EmptyClients.h */, 15225 15219 656D37230ADBA5DE00A4554D /* FormState.cpp */, … … 21068 21062 C5D4AA79116BAFB60069CA93 /* GlyphMetricsMap.cpp in Sources */, 21069 21063 895253D7116C4C6800CABF00 /* FileStream.cpp in Sources */, 21070 973889A0116EA9DC00ADF313 /* DocumentWriter.cpp in Sources */,21071 21064 ); 21072 21065 runOnlyForDeploymentPostprocessing = 0; -
trunk/WebCore/bindings/ScriptControllerBase.cpp
r57468 r57469 102 102 // http://bugs.webkit.org/show_bug.cgi?id=16782 103 103 if (replaceDocument) 104 m_frame->loader()-> writer()->replaceDocument(scriptResult);104 m_frame->loader()->replaceDocument(scriptResult); 105 105 106 106 return true; -
trunk/WebCore/dom/Document.cpp
r57468 r57469 1770 1770 // This code calls implicitClose() if all loading has completed. 1771 1771 FrameLoader* frameLoader = frame->loader(); 1772 frameLoader-> writer()->endIfNotLoadingMainResource();1772 frameLoader->endIfNotLoadingMainResource(); 1773 1773 frameLoader->checkCompleted(); 1774 1774 } else { -
trunk/WebCore/dom/ProcessingInstruction.cpp
r57468 r57469 166 166 String charset = attrs.get("charset"); 167 167 if (charset.isEmpty()) 168 charset = document()->frame()->loader()-> writer()->encoding();168 charset = document()->frame()->loader()->encoding(); 169 169 170 170 m_cachedSheet = document()->docLoader()->requestCSSStyleSheet(url, charset); -
trunk/WebCore/dom/ScriptElement.cpp
r57468 r57469 264 264 if (charset.isEmpty()) { 265 265 if (Frame* frame = m_element->document()->frame()) 266 charset = frame->loader()-> writer()->encoding();266 charset = frame->loader()->encoding(); 267 267 } 268 268 -
trunk/WebCore/html/HTMLLinkElement.cpp
r57468 r57469 195 195 String charset = getAttribute(charsetAttr); 196 196 if (charset.isEmpty() && document()->frame()) 197 charset = document()->frame()->loader()-> writer()->encoding();197 charset = document()->frame()->loader()->encoding(); 198 198 199 199 if (m_cachedSheet) { -
trunk/WebCore/loader/DocLoader.cpp
r57468 r57469 405 405 String encoding; 406 406 if (type == CachedResource::Script || type == CachedResource::CSSStyleSheet) 407 encoding = charset.isEmpty() ? m_doc->frame()->loader()-> writer()->encoding() : charset;407 encoding = charset.isEmpty() ? m_doc->frame()->loader()->encoding() : charset; 408 408 409 409 CachedResource* resource = requestResource(type, url, encoding, true); -
trunk/WebCore/loader/DocumentLoader.cpp
r57468 r57469 266 266 if (FrameLoader* loader = frameLoader()) { 267 267 loader->finishedLoadingDocument(this); 268 loader-> writer()->end();268 loader->end(); 269 269 } 270 270 } … … 308 308 309 309 frameLoader()->finishedLoadingDocument(this); 310 m_frame->loader()-> writer()->end();310 m_frame->loader()->end(); 311 311 312 312 frameLoader()->setReplacing(); -
trunk/WebCore/loader/FrameLoader.cpp
r57468 r57469 165 165 } 166 166 167 static inline bool canReferToParentFrameEncoding(const Frame* frame, const Frame* parentFrame) 168 { 169 return parentFrame && parentFrame->document()->securityOrigin()->canAccess(frame->document()->securityOrigin()); 170 } 171 167 172 FrameLoader::FrameLoader(Frame* frame, FrameLoaderClient* client) 168 173 : m_frame(frame) … … 171 176 , m_history(frame) 172 177 , m_notifer(frame) 173 , m_writer(frame)174 178 , m_state(FrameStateCommittedPage) 175 179 , m_loadType(FrameLoadTypeStandard) … … 186 190 , m_isLoadingMainResource(false) 187 191 , m_needsClear(false) 192 , m_receivedData(false) 193 , m_encodingWasChosenByUser(false) 188 194 , m_containsPlugIns(false) 189 195 , m_checkTimer(this, &FrameLoader::checkTimerFired) … … 226 232 m_provisionalDocumentLoader->setResponse(ResourceResponse(KURL(), "text/html", 0, String(), String())); 227 233 m_provisionalDocumentLoader->finishedLoading(); 228 writer()->begin(KURL(), false);229 writer()->end();234 begin(KURL(), false); 235 end(); 230 236 m_frame->document()->cancelParsing(); 231 237 m_creatingInitialEmptyDocument = false; … … 700 706 } 701 707 708 void FrameLoader::replaceDocument(const String& html) 709 { 710 stopAllLoaders(); 711 begin(m_URL, true, m_frame->document()->securityOrigin()); 712 write(html); 713 end(); 714 } 715 702 716 void FrameLoader::clear(bool clearWindowProperties, bool clearScriptObjects, bool clearFrameView) 703 717 { … … 733 747 // as some destructors might still try to access the document. 734 748 m_frame->setDocument(0); 735 writer()->clear();749 m_decoder = 0; 736 750 737 751 m_containsPlugIns = false; … … 745 759 m_shouldCallCheckCompleted = false; 746 760 m_shouldCallCheckLoadComplete = false; 761 762 m_receivedData = false; 747 763 m_isDisplayingInitialEmptyDocument = false; 764 765 if (!m_encodingWasChosenByUser) 766 m_encoding = String(); 748 767 } 749 768 750 769 void FrameLoader::receivedFirstData() 751 770 { 752 writer()->begin(m_workingURL, false);771 begin(m_workingURL, false); 753 772 754 773 dispatchDidCommitLoad(); … … 781 800 } 782 801 783 void FrameLoader::setURL(const KURL& url) 784 { 802 const String& FrameLoader::responseMIMEType() const 803 { 804 return m_responseMIMEType; 805 } 806 807 void FrameLoader::setResponseMIMEType(const String& type) 808 { 809 m_responseMIMEType = type; 810 } 811 812 void FrameLoader::begin() 813 { 814 begin(KURL()); 815 } 816 817 void FrameLoader::begin(const KURL& url, bool dispatch, SecurityOrigin* origin) 818 { 819 // We need to take a reference to the security origin because |clear| 820 // might destroy the document that owns it. 821 RefPtr<SecurityOrigin> forcedSecurityOrigin = origin; 822 823 RefPtr<Document> document; 824 825 // Create a new document before clearing the frame, because it may need to inherit an aliased security context. 826 if (!m_isDisplayingInitialEmptyDocument && m_client->shouldUsePluginDocument(m_responseMIMEType)) 827 document = PluginDocument::create(m_frame); 828 else if (!m_client->hasHTMLView()) 829 document = PlaceholderDocument::create(m_frame); 830 else 831 document = DOMImplementation::createDocument(m_responseMIMEType, m_frame, m_frame->inViewSourceMode()); 832 833 bool resetScripting = !(m_isDisplayingInitialEmptyDocument && m_frame->document()->securityOrigin()->isSecureTransitionTo(url)); 834 clear(resetScripting, resetScripting); 835 if (resetScripting) 836 m_frame->script()->updatePlatformScriptObjects(); 837 838 m_needsClear = true; 839 m_isComplete = false; 840 m_didCallImplicitClose = false; 841 m_isLoadingMainResource = true; 842 m_isDisplayingInitialEmptyDocument = m_creatingInitialEmptyDocument; 843 785 844 KURL ref(url); 786 845 ref.setUser(String()); … … 789 848 m_outgoingReferrer = ref.string(); 790 849 m_URL = url; 791 } 792 793 void FrameLoader::didBeginDocument(bool dispatch) 794 { 850 851 document->setURL(m_URL); 852 m_frame->setDocument(document); 853 795 854 if (m_pendingStateObject) { 796 m_frame->document()->statePopped(m_pendingStateObject.get());855 document->statePopped(m_pendingStateObject.get()); 797 856 m_pendingStateObject.clear(); 798 857 } 799 800 m_needsClear = true; 801 m_isComplete = false; 802 m_didCallImplicitClose = false; 803 m_isLoadingMainResource = true; 804 m_isDisplayingInitialEmptyDocument = m_creatingInitialEmptyDocument; 858 859 if (m_decoder) 860 document->setDecoder(m_decoder.get()); 861 if (forcedSecurityOrigin) 862 document->setSecurityOrigin(forcedSecurityOrigin.get()); 863 864 m_frame->domWindow()->setURL(document->url()); 865 m_frame->domWindow()->setSecurityOrigin(document->securityOrigin()); 805 866 806 867 if (dispatch) 807 868 dispatchDidClearWindowObjectsInAllWorlds(); 808 869 809 870 updateFirstPartyForCookies(); 810 871 811 Settings* settings = m_frame->document()->settings();812 m_frame->document()->docLoader()->setAutoLoadImages(settings && settings->loadsImagesAutomatically());872 Settings* settings = document->settings(); 873 document->docLoader()->setAutoLoadImages(settings && settings->loadsImagesAutomatically()); 813 874 814 875 if (m_documentLoader) { 815 876 String dnsPrefetchControl = m_documentLoader->response().httpHeaderField("X-DNS-Prefetch-Control"); 816 877 if (!dnsPrefetchControl.isEmpty()) 817 m_frame->document()->parseDNSPrefetchControlHeader(dnsPrefetchControl);878 document->parseDNSPrefetchControlHeader(dnsPrefetchControl); 818 879 } 819 880 820 881 history()->restoreDocumentState(); 821 } 822 823 void FrameLoader::didEndDocument() 882 883 document->implicitOpen(); 884 885 if (m_frame->view() && m_client->hasHTMLView()) 886 m_frame->view()->setContentsSize(IntSize()); 887 } 888 889 void FrameLoader::write(const char* str, int len, bool flush) 890 { 891 if (len == 0 && !flush) 892 return; 893 894 if (len == -1) 895 len = strlen(str); 896 897 Tokenizer* tokenizer = m_frame->document()->tokenizer(); 898 if (tokenizer && tokenizer->wantsRawData()) { 899 if (len > 0) 900 tokenizer->writeRawData(str, len); 901 return; 902 } 903 904 if (!m_decoder) { 905 if (Settings* settings = m_frame->settings()) { 906 m_decoder = TextResourceDecoder::create(m_responseMIMEType, 907 settings->defaultTextEncodingName(), 908 settings->usesEncodingDetector()); 909 Frame* parentFrame = m_frame->tree()->parent(); 910 // Set the hint encoding to the parent frame encoding only if 911 // the parent and the current frames share the security origin. 912 // We impose this condition because somebody can make a child frame 913 // containing a carefully crafted html/javascript in one encoding 914 // that can be mistaken for hintEncoding (or related encoding) by 915 // an auto detector. When interpreted in the latter, it could be 916 // an attack vector. 917 // FIXME: This might be too cautious for non-7bit-encodings and 918 // we may consider relaxing this later after testing. 919 if (canReferToParentFrameEncoding(m_frame, parentFrame)) 920 m_decoder->setHintEncoding(parentFrame->document()->decoder()); 921 } else 922 m_decoder = TextResourceDecoder::create(m_responseMIMEType, String()); 923 Frame* parentFrame = m_frame->tree()->parent(); 924 if (m_encoding.isEmpty()) { 925 if (canReferToParentFrameEncoding(m_frame, parentFrame)) 926 m_decoder->setEncoding(parentFrame->document()->inputEncoding(), TextResourceDecoder::EncodingFromParentFrame); 927 } else { 928 m_decoder->setEncoding(m_encoding, 929 m_encodingWasChosenByUser ? TextResourceDecoder::UserChosenEncoding : TextResourceDecoder::EncodingFromHTTPHeader); 930 } 931 m_frame->document()->setDecoder(m_decoder.get()); 932 } 933 934 String decoded = m_decoder->decode(str, len); 935 if (flush) 936 decoded += m_decoder->flush(); 937 if (decoded.isEmpty()) 938 return; 939 940 if (!m_receivedData) { 941 m_receivedData = true; 942 if (m_decoder->encoding().usesVisualOrdering()) 943 m_frame->document()->setVisuallyOrdered(); 944 m_frame->document()->recalcStyle(Node::Force); 945 } 946 947 if (tokenizer) { 948 ASSERT(!tokenizer->wantsRawData()); 949 tokenizer->write(decoded, true); 950 } 951 } 952 953 void FrameLoader::write(const String& str) 954 { 955 if (str.isNull()) 956 return; 957 958 if (!m_receivedData) { 959 m_receivedData = true; 960 m_frame->document()->setParseMode(Document::Strict); 961 } 962 963 if (Tokenizer* tokenizer = m_frame->document()->tokenizer()) 964 tokenizer->write(str, true); 965 } 966 967 void FrameLoader::end() 824 968 { 825 969 m_isLoadingMainResource = false; 970 endIfNotLoadingMainResource(); 971 } 972 973 void FrameLoader::endIfNotLoadingMainResource() 974 { 975 if (m_isLoadingMainResource || !m_frame->page() || !m_frame->document()) 976 return; 977 978 // http://bugs.webkit.org/show_bug.cgi?id=10854 979 // The frame's last ref may be removed and it can be deleted by checkCompleted(), 980 // so we'll add a protective refcount 981 RefPtr<Frame> protector(m_frame); 982 983 // make sure nothing's left in there 984 write(0, 0, true); 985 m_frame->document()->finishParsing(); 826 986 } 827 987 … … 1101 1261 } 1102 1262 1263 String FrameLoader::encoding() const 1264 { 1265 if (m_encodingWasChosenByUser && !m_encoding.isEmpty()) 1266 return m_encoding; 1267 if (m_decoder && m_decoder->encoding().isValid()) 1268 return m_decoder->encoding().name(); 1269 Settings* settings = m_frame->settings(); 1270 return settings ? settings->defaultTextEncodingName() : String(); 1271 } 1272 1103 1273 bool FrameLoader::requestObject(RenderEmbeddedObject* renderer, const String& url, const AtomicString& frameName, 1104 1274 const String& mimeType, const Vector<String>& paramNames, const Vector<String>& paramValues) … … 1364 1534 } 1365 1535 1366 void FrameLoader:: willSetEncoding()1536 void FrameLoader::setEncoding(const String& name, bool userChosen) 1367 1537 { 1368 1538 if (!m_workingURL.isEmpty()) 1369 1539 receivedFirstData(); 1540 m_encoding = name; 1541 m_encodingWasChosenByUser = userChosen; 1370 1542 } 1371 1543 … … 1375 1547 ASSERT(m_frame->document()); 1376 1548 ASSERT(m_frame->document()->parsing()); 1377 write r()->addData(bytes, length);1549 write(bytes, length); 1378 1550 } 1379 1551 … … 2487 2659 } 2488 2660 2489 writer()->setMIMEType(dl->responseMIMEType());2661 m_responseMIMEType = dl->responseMIMEType(); 2490 2662 2491 2663 // Tell the client we've committed this URL. … … 2604 2776 m_workingURL = url; 2605 2777 2606 m_frame->loader()->started();2607 m_frame->loader()->clear(true, true, cachedFrame.isMainFrame());2778 started(); 2779 clear(true, true, cachedFrame.isMainFrame()); 2608 2780 2609 2781 Document* document = cachedFrame.document(); … … 2632 2804 m_frame->domWindow()->setSecurityOrigin(document->securityOrigin()); 2633 2805 2634 // FIXME: I would have expected us to restore the value of 2635 // DocumentWriter::m_encoding here, but we don't seem to. I wonder if 2636 // that's a bug. One way to test is to look at the fallback array of 2637 // encodings for decoding content disposition. 2638 writer()->setDecoder(document->decoder()); 2806 m_decoder = document->decoder(); 2639 2807 2640 2808 updateFirstPartyForCookies(); … … 2728 2896 loader->setParsedArchiveData(mainResource->data()); 2729 2897 2730 writer()->setMIMEType(mainResource->mimeType());2898 m_responseMIMEType = mainResource->mimeType(); 2731 2899 2732 2900 closeURL(); … … 2735 2903 String userChosenEncoding = documentLoader()->overrideEncoding(); 2736 2904 bool encodingIsUserChosen = !userChosenEncoding.isNull(); 2737 writer()->setEncoding(encodingIsUserChosen ? userChosenEncoding : mainResource->textEncoding(), encodingIsUserChosen);2905 setEncoding(encodingIsUserChosen ? userChosenEncoding : mainResource->textEncoding(), encodingIsUserChosen); 2738 2906 2739 2907 ASSERT(m_frame->document()); … … 3142 3310 // Always try UTF-8. If that fails, try frame encoding (if any) and then the default. 3143 3311 // For a newly opened frame with an empty URL, encoding() should not be used, because this methods asks decoder, which uses ISO-8859-1. 3144 String encoding1 = "UTF-8"; 3145 String encoding2 = writer()->depricatedFrameEncoding(); 3146 String encoding3; 3147 if (Settings* settings = m_frame->settings()) 3148 encoding3 = settings->defaultTextEncodingName(); 3149 request.setResponseContentDispositionEncodingFallbackArray(encoding1, encoding2, encoding3); 3312 Settings* settings = m_frame->settings(); 3313 request.setResponseContentDispositionEncodingFallbackArray("UTF-8", m_URL.isEmpty() ? m_encoding : encoding(), settings ? settings->defaultTextEncodingName() : String()); 3150 3314 } 3151 3315 -
trunk/WebCore/loader/FrameLoader.h
r57468 r57469 33 33 34 34 #include "CachePolicy.h" 35 #include "DocumentWriter.h"36 35 #include "FrameLoaderTypes.h" 37 36 #include "HistoryController.h" … … 101 100 HistoryController* history() const { return &m_history; } 102 101 ResourceLoadNotifier* notifier() const { return &m_notifer; } 103 DocumentWriter* writer() const { return &m_writer; }104 102 105 103 // FIXME: This is not cool, people. There are too many different functions that all start loads. … … 229 227 void didExplicitOpen(); 230 228 231 // Callbacks from DocumentWriter232 void didBeginDocument(bool dispatchWindowObjectAvailable);233 void didEndDocument();234 void willSetEncoding();235 236 229 KURL iconURL(); 237 230 void commitIconURLToIconDatabase(const KURL&); 238 231 239 232 KURL baseURL() const; 233 234 void replaceDocument(const String&); 235 236 void begin(); 237 void begin(const KURL&, bool dispatchWindowObjectAvailable = true, SecurityOrigin* forcedSecurityOrigin = 0); 238 239 void write(const char* string, int length = -1, bool flush = false); 240 void write(const String&); 241 void end(); 242 void endIfNotLoadingMainResource(); 243 244 void setEncoding(const String& encoding, bool userChosen); 245 String encoding() const; 240 246 241 247 void tokenizerProcessedData(); … … 278 284 const KURL& url() const { return m_URL; } 279 285 280 // setURL is a low-level setter and does not trigger loading.281 void setURL(const KURL&);286 void setResponseMIMEType(const String&); 287 const String& responseMIMEType() const; 282 288 283 289 bool allowPlugins(ReasonForCallingAllowPlugins); … … 298 304 299 305 void cancelAndClear(); 300 void clear(bool clearWindowProperties = true, bool clearScriptObjects = true, bool clearFrameView = true);301 306 302 307 void setTitle(const String&); … … 343 348 static ObjectContentType defaultObjectContentType(const KURL& url, const String& mimeType); 344 349 345 bool isDisplayingInitialEmptyDocument() const { return m_isDisplayingInitialEmptyDocument; }346 347 350 private: 348 351 bool canCachePageContainingThisFrame(); … … 409 412 void updateHistoryAfterClientRedirect(); 410 413 414 void clear(bool clearWindowProperties = true, bool clearScriptObjects = true, bool clearFrameView = true); 415 411 416 bool shouldReloadToHandleUnreachableURL(DocumentLoader*); 412 417 … … 461 466 mutable HistoryController m_history; 462 467 mutable ResourceLoadNotifier m_notifer; 463 mutable DocumentWriter m_writer;464 468 465 469 FrameState m_state; … … 485 489 bool m_isExecutingJavaScriptFormAction; 486 490 491 String m_responseMIMEType; 492 487 493 bool m_didCallImplicitClose; 488 494 bool m_wasUnloadEventEmitted; … … 502 508 503 509 bool m_needsClear; 510 bool m_receivedData; 511 512 bool m_encodingWasChosenByUser; 513 String m_encoding; 514 RefPtr<TextResourceDecoder> m_decoder; 504 515 505 516 bool m_containsPlugIns; -
trunk/WebCore/loader/MediaDocument.cpp
r57468 r57469 228 228 embedElement->setAttribute(nameAttr, "plugin"); 229 229 embedElement->setAttribute(srcAttr, url().string()); 230 embedElement->setAttribute(typeAttr, frame()->loader()-> writer()->mimeType());230 embedElement->setAttribute(typeAttr, frame()->loader()->responseMIMEType()); 231 231 232 232 ExceptionCode ec; -
trunk/WebCore/loader/PluginDocument.cpp
r57468 r57469 106 106 m_embedElement->setAttribute(nameAttr, "plugin"); 107 107 m_embedElement->setAttribute(srcAttr, m_doc->url().string()); 108 m_embedElement->setAttribute(typeAttr, m_doc->frame()->loader()-> writer()->mimeType());108 m_embedElement->setAttribute(typeAttr, m_doc->frame()->loader()->responseMIMEType()); 109 109 110 110 body->appendChild(embedElement, ec); -
trunk/WebCore/platform/network/FormDataBuilder.cpp
r57468 r57469 88 88 89 89 if (Frame* frame = document->frame()) 90 return frame->loader()-> writer()->encoding();90 return frame->loader()->encoding(); 91 91 92 92 return Latin1Encoding(); -
trunk/WebCore/svg/graphics/SVGImage.cpp
r57468 r57469 260 260 loader->policyChecker()->cancelCheck(); // cancel any policy checks 261 261 loader->commitProvisionalLoad(0); 262 loader-> writer()->setMIMEType("image/svg+xml");263 loader-> writer()->begin(KURL()); // create the empty document264 loader->write r()->addData(data()->data(), data()->size());265 loader-> writer()->end();262 loader->setResponseMIMEType("image/svg+xml"); 263 loader->begin(KURL()); // create the empty document 264 loader->write(data()->data(), data()->size()); 265 loader->end(); 266 266 frame->view()->setTransparent(true); // SVG Images are transparent. 267 267 } -
trunk/WebKit/chromium/ChangeLog
r57468 r57469 1 2010-04-11 Sheriff Bot <webkit.review.bot@gmail.com> 2 3 Unreviewed, rolling out r57468. 4 http://trac.webkit.org/changeset/57468 5 https://bugs.webkit.org/show_bug.cgi?id=37433 6 7 Broke the world... Must have applied the patch wrong 8 (Requested by abarth on #webkit). 9 10 * src/ContextMenuClientImpl.cpp: 11 (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems): 12 * src/FrameLoaderClientImpl.cpp: 13 (WebKit::FrameLoaderClientImpl::finishedLoading): 14 * src/WebFrameImpl.cpp: 15 (WebKit::WebFrameImpl::encoding): 16 (WebKit::WebFrameImpl::commitDocumentData): 17 * src/WebPageSerializerImpl.cpp: 18 (WebKit::WebPageSerializerImpl::preActionBeforeSerializeOpenTag): 19 (WebKit::WebPageSerializerImpl::serialize): 20 * src/WebSearchableFormData.cpp: 21 (WebCore::GetFormEncoding): 22 * src/WebViewImpl.cpp: 23 (WebKit::WebViewImpl::pageEncoding): 24 1 25 2010-04-11 Adam Barth <abarth@webkit.org> 2 26 -
trunk/WebKit/chromium/src/ContextMenuClientImpl.cpp
r57468 r57469 193 193 // If it's not a link, an image, a media element, or an image/media link, 194 194 // show a selection menu or a more generic page menu. 195 data.frameEncoding = selectedFrame->loader()-> writer()->encoding();195 data.frameEncoding = selectedFrame->loader()->encoding(); 196 196 197 197 // Send the frame and page URLs in any case. -
trunk/WebKit/chromium/src/FrameLoaderClientImpl.cpp
r57468 r57469 1067 1067 // match the behavior on the Mac. 1068 1068 if (m_hasRepresentation) 1069 dl->frameLoader()-> writer()->setEncoding("", false);1069 dl->frameLoader()->setEncoding("", false); 1070 1070 } 1071 1071 } -
trunk/WebKit/chromium/src/WebFrameImpl.cpp
r57468 r57469 523 523 WebString WebFrameImpl::encoding() const 524 524 { 525 return frame()->loader()-> writer()->encoding();525 return frame()->loader()->encoding(); 526 526 } 527 527 … … 1017 1017 encoding = documentLoader->response().textEncodingName(); 1018 1018 } 1019 m_frame->loader()-> writer()->setEncoding(encoding, userChosen);1019 m_frame->loader()->setEncoding(encoding, userChosen); 1020 1020 1021 1021 // NOTE: mac only does this if there is a document -
trunk/WebKit/chromium/src/WebPageSerializerImpl.cpp
r57468 r57469 171 171 String xmlEncoding = param->doc->xmlEncoding(); 172 172 if (xmlEncoding.isEmpty()) 173 xmlEncoding = param->doc->frame()->loader()-> writer()->encoding();173 xmlEncoding = param->doc->frame()->loader()->encoding(); 174 174 if (xmlEncoding.isEmpty()) 175 175 xmlEncoding = UTF8Encoding().name(); … … 515 515 didSerialization = true; 516 516 // Get target encoding for current document. 517 String encoding = currentFrame->frame()->loader()-> writer()->encoding();517 String encoding = currentFrame->frame()->loader()->encoding(); 518 518 // Create the text encoding object with target encoding. 519 519 TextEncoding textEncoding(encoding); -
trunk/WebKit/chromium/src/WebSearchableFormData.cpp
r57468 r57469 63 63 } 64 64 const Frame* frame = form->document()->frame(); 65 *encoding = frame ? TextEncoding(frame->loader()-> writer()->encoding()) : Latin1Encoding();65 *encoding = frame ? TextEncoding(frame->loader()->encoding()) : Latin1Encoding(); 66 66 } 67 67 -
trunk/WebKit/chromium/src/WebViewImpl.cpp
r57468 r57469 1283 1283 return WebString(); 1284 1284 1285 return m_page->mainFrame()->loader()-> writer()->encoding();1285 return m_page->mainFrame()->loader()->encoding(); 1286 1286 } 1287 1287 -
trunk/WebKit/gtk/ChangeLog
r57468 r57469 1 2010-04-11 Sheriff Bot <webkit.review.bot@gmail.com> 2 3 Unreviewed, rolling out r57468. 4 http://trac.webkit.org/changeset/57468 5 https://bugs.webkit.org/show_bug.cgi?id=37433 6 7 Broke the world... Must have applied the patch wrong 8 (Requested by abarth on #webkit). 9 10 * WebCoreSupport/FrameLoaderClientGtk.cpp: 11 (WebKit::FrameLoaderClient::committedLoad): 12 (WebKit::FrameLoaderClient::finishedLoading): 13 * webkit/webkitwebview.cpp: 14 (webkit_web_view_get_encoding): 15 1 16 2010-04-11 Adam Barth <abarth@webkit.org> 2 17 -
trunk/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp
r57468 r57469 150 150 151 151 FrameLoader* frameLoader = loader->frameLoader(); 152 frameLoader-> writer()->setEncoding(encoding, userChosen);152 frameLoader->setEncoding(encoding, userChosen); 153 153 if (data) 154 154 frameLoader->addData(data, length); … … 869 869 if (!m_pluginView) { 870 870 FrameLoader* loader = documentLoader->frameLoader(); 871 loader-> writer()->setEncoding(m_response.textEncodingName(), false);871 loader->setEncoding(m_response.textEncodingName(), false); 872 872 } else { 873 873 m_pluginView->didFinishLoading(); -
trunk/WebKit/gtk/webkit/webkitwebview.cpp
r57468 r57469 4012 4012 g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL); 4013 4013 4014 String encoding = core(webView)->mainFrame()->loader()-> writer()->encoding();4014 String encoding = core(webView)->mainFrame()->loader()->encoding(); 4015 4015 4016 4016 if (!encoding.isEmpty()) { -
trunk/WebKit/haiku/ChangeLog
r57468 r57469 1 2010-04-11 Sheriff Bot <webkit.review.bot@gmail.com> 2 3 Unreviewed, rolling out r57468. 4 http://trac.webkit.org/changeset/57468 5 https://bugs.webkit.org/show_bug.cgi?id=37433 6 7 Broke the world... Must have applied the patch wrong 8 (Requested by abarth on #webkit). 9 10 * WebCoreSupport/FrameLoaderClientHaiku.cpp: 11 (WebCore::FrameLoaderClientHaiku::committedLoad): 12 1 13 2010-04-11 Adam Barth <abarth@webkit.org> 2 14 -
trunk/WebKit/haiku/WebCoreSupport/FrameLoaderClientHaiku.cpp
r57468 r57469 511 511 512 512 FrameLoader* frameLoader = loader->frameLoader(); 513 frameLoader-> writer()->setEncoding(m_response.textEncodingName(), false);513 frameLoader->setEncoding(m_response.textEncodingName(), false); 514 514 frameLoader->addData(data, length); 515 515 } -
trunk/WebKit/mac/ChangeLog
r57468 r57469 1 2010-04-11 Sheriff Bot <webkit.review.bot@gmail.com> 2 3 Unreviewed, rolling out r57468. 4 http://trac.webkit.org/changeset/57468 5 https://bugs.webkit.org/show_bug.cgi?id=37433 6 7 Broke the world... Must have applied the patch wrong 8 (Requested by abarth on #webkit). 9 10 * WebView/WebFrame.mm: 11 (-[WebFrame _canProvideDocumentSource]): 12 (-[WebFrame _receivedData:textEncodingName:]): 13 1 14 2010-04-11 Adam Barth <abarth@webkit.org> 2 15 -
trunk/WebKit/mac/WebView/WebFrame.mm
r57468 r57469 962 962 { 963 963 Frame* frame = _private->coreFrame; 964 String mimeType = frame->loader()-> writer()->mimeType();964 String mimeType = frame->loader()->responseMIMEType(); 965 965 PluginData* pluginData = frame->page() ? frame->page()->pluginData() : 0; 966 966 … … 987 987 if (encoding.isNull()) 988 988 encoding = textEncodingName; 989 _private->coreFrame->loader()-> writer()->setEncoding(encoding, userChosen);989 _private->coreFrame->loader()->setEncoding(encoding, userChosen); 990 990 [self _addData:data]; 991 991 } -
trunk/WebKit/qt/ChangeLog
r57468 r57469 1 2010-04-11 Sheriff Bot <webkit.review.bot@gmail.com> 2 3 Unreviewed, rolling out r57468. 4 http://trac.webkit.org/changeset/57468 5 https://bugs.webkit.org/show_bug.cgi?id=37433 6 7 Broke the world... Must have applied the patch wrong 8 (Requested by abarth on #webkit). 9 10 * WebCoreSupport/FrameLoaderClientQt.cpp: 11 (WebCore::FrameLoaderClientQt::finishedLoading): 12 (WebCore::FrameLoaderClientQt::setMainDocumentError): 13 (WebCore::FrameLoaderClientQt::committedLoad): 14 (WebCore::FrameLoaderClientQt::dispatchDidFailLoading): 15 1 16 2010-04-11 Adam Barth <abarth@webkit.org> 2 17 -
trunk/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
r57468 r57469 537 537 if(m_firstData) { 538 538 FrameLoader *fl = loader->frameLoader(); 539 fl-> writer()->setEncoding(m_response.textEncodingName(), false);539 fl->setEncoding(m_response.textEncodingName(), false); 540 540 m_firstData = false; 541 541 } … … 728 728 if (!m_pluginView) { 729 729 if (m_firstData) { 730 loader->frameLoader()-> writer()->setEncoding(m_response.textEncodingName(), false);730 loader->frameLoader()->setEncoding(m_response.textEncodingName(), false); 731 731 m_firstData = false; 732 732 } … … 746 746 FrameLoader *fl = loader->frameLoader(); 747 747 if (m_firstData) { 748 fl-> writer()->setEncoding(m_response.textEncodingName(), false);748 fl->setEncoding(m_response.textEncodingName(), false); 749 749 m_firstData = false; 750 750 } … … 932 932 if (m_firstData) { 933 933 FrameLoader *fl = loader->frameLoader(); 934 fl-> writer()->setEncoding(m_response.textEncodingName(), false);934 fl->setEncoding(m_response.textEncodingName(), false); 935 935 m_firstData = false; 936 936 } -
trunk/WebKit/win/ChangeLog
r57468 r57469 1 2010-04-11 Sheriff Bot <webkit.review.bot@gmail.com> 2 3 Unreviewed, rolling out r57468. 4 http://trac.webkit.org/changeset/57468 5 https://bugs.webkit.org/show_bug.cgi?id=37433 6 7 Broke the world... Must have applied the patch wrong 8 (Requested by abarth on #webkit). 9 10 * WebCoreSupport/WebFrameLoaderClient.cpp: 11 (WebFrameLoaderClient::receivedData): 12 1 13 2010-04-11 Adam Barth <abarth@webkit.org> 2 14 -
trunk/WebKit/win/WebCoreSupport/WebFrameLoaderClient.cpp
r57468 r57469 510 510 if (encoding.isNull()) 511 511 encoding = textEncoding; 512 coreFrame->loader()-> writer()->setEncoding(encoding, userChosen);512 coreFrame->loader()->setEncoding(encoding, userChosen); 513 513 514 514 coreFrame->loader()->addData(data, length); -
trunk/WebKit/wx/ChangeLog
r57468 r57469 1 2010-04-11 Sheriff Bot <webkit.review.bot@gmail.com> 2 3 Unreviewed, rolling out r57468. 4 http://trac.webkit.org/changeset/57468 5 https://bugs.webkit.org/show_bug.cgi?id=37433 6 7 Broke the world... Must have applied the patch wrong 8 (Requested by abarth on #webkit). 9 10 * WebKitSupport/FrameLoaderClientWx.cpp: 11 (WebCore::FrameLoaderClientWx::committedLoad): 12 1 13 2010-04-11 Adam Barth <abarth@webkit.org> 2 14 -
trunk/WebKit/wx/WebKitSupport/FrameLoaderClientWx.cpp
r57468 r57469 605 605 if (!m_pluginView) { 606 606 FrameLoader* fl = loader->frameLoader(); 607 fl-> writer()->setEncoding(m_response.textEncodingName(), false);607 fl->setEncoding(m_response.textEncodingName(), false); 608 608 fl->addData(data, length); 609 609 }
Note: See TracChangeset
for help on using the changeset viewer.