[prev in list] [next in list] [prev in thread] [next in thread] 

List:       webkit-changes
Subject:    [webkit-changes] [42022] trunk
From:       eric () webkit ! org
Date:       2009-03-27 0:01:58
Message-ID: 20090327000202.250E012FEC73 () beta ! macosforge ! org
[Download RAW message or body]

[Attachment #2 (text/html)]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[42022] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: \
verdana,arial,helvetica,sans-serif; font-size: 10pt;  } #msg dl a { font-weight: \
bold} #msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: \
bold; } #msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: \
6px; } #logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em \
0; } #logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg \
h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; } \
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; \
} #logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: \
-1.5em; padding-left: 1.5em; } #logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em \
1em 0 1em; background: white;} #logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid \
#fa0; border-bottom: 1px solid #fa0; background: #fff; } #logmsg table th { \
text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted \
#fa0; } #logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: \
0.2em 0.5em; } #logmsg table thead th { text-align: center; border-bottom: 1px solid \
#fa0; } #logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: \
6px; } #patch { width: 100%; }
#patch h4 {font-family: \
verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
 #patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, \
#patch .copfile {border:1px solid #ccc;margin:10px 0;} #patch ins \
{background:#dfd;text-decoration:none;display:block;padding:0 10px;} #patch del \
{background:#fdd;text-decoration:none;display:block;padding:0 10px;} #patch .lines, \
                .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a \
href="http://trac.webkit.org/projects/webkit/changeset/42022">42022</a></dd> \
<dt>Author</dt> <dd>eric@webkit.org</dd> <dt>Date</dt> <dd>2009-03-26 17:01:58 -0700 \
(Thu, 26 Mar 2009)</dd> </dl>

<h3>Log Message</h3>
<pre>2009-03-26  Jungshik Shin  &lt;jshin@chromium.org&gt;

        Reviewed by Alexey Proskuryakov.

        Add an encoding detector 'hook' to TextResourceDecoder.
         - add |usesEncodingDetector| to Settings. It's off by default.
         - add a new encoding source type |EncodingFromParent|
           to distinguish cases when the encoding is inherited from
           the parent frame from cases when it's actually auto-detected.
         - add TextEncodingDetector* to platform/text. Currently,
           the only implementation uses ICU. Stub is added for
           ports that do not use ICU and a build on Tiger. Mac OS
           Tiger comes with ICU 3.2 that does not support encoding detector.
         - add ucsdet.h to icu/unicode for ports using ICU.

        Layout tests will be added once bug 20534 is fixed and a WebPreference
        can be controlled in test_shell. With UsesEncodingDetector off, there
        is no change to test.

        http://bugs.webkit.org/show_bug.cgi?id=16482

        * WebCore.vcproj/WebCore.vcproj:
        * WebCore.xcodeproj/project.pbxproj:
        * WebCore/GNUmakefile.am
        * WebCore/WebCore.pro
        * WebCore/WebCore.scons
        * WebCore/WebCoreSources.bkl
        * WebCore.base.exp
        * icu/unicode/ucsdet.h
        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::write): turn on/off encoding detector depending on \
Settings and set hintEncoding of TextResourceDecoder to the parent frame encoding if \
                necessary and the security policy allows refering to the parent frame \
                encoding.
        * loader/TextResourceDecoder.cpp:
        (WebCore::TextResourceDecoder::TextResourceDecoder):
        (WebCore::TextResourceDecoder::checkForCSSCharset): add check for \
EncodingFromParentFrame  (WebCore::TextResourceDecoder::checkForHeadCharset): ditto
        (WebCore::TextResourceDecoder::shouldAutoDetect):
        (WebCore::TextResourceDecoder::decode): call encoding detector if \
                shouldAutoDetect returns true.
        (WebCore::TextResourceDecoder::flush): if encoding is not determined by now, \
                call encoding detector if shouldAutoDetect returns true.
        * loader/TextResourceDecoder.h:
        (WebCore::TextResourceDecoder::):
        (WebCore::TextResourceDecoder::create):
        (WebCore::TextResourceDecoder::setHintEncoding):
        (WebCore::TextResourceDecoder::source):
        * page/Settings.cpp: add m_usesEncodingDetector
        (WebCore::Settings::Settings):
        (WebCore::Settings::setUsesEncodingDetector):
        * page/Settings.h:
        (WebCore::Settings::usesEncodingDetector):
        * platform/text/TextEncodingDetector.h: Added.
        * platform/text/TextEncodingDetectorICU.cpp: Added.
        (WebCore::detectTextEncoding):
        * platform/text/TextEncodingDetectorNone.cpp: Added.
        (WebCore::detectTextEncoding):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkWebCoreChangeLog">trunk/WebCore/ChangeLog</a></li>
<li><a href="#trunkWebCoreGNUmakefileam">trunk/WebCore/GNUmakefile.am</a></li>
<li><a href="#trunkWebCoreWebCorebaseexp">trunk/WebCore/WebCore.base.exp</a></li>
<li><a href="#trunkWebCoreWebCorepro">trunk/WebCore/WebCore.pro</a></li>
<li><a href="#trunkWebCoreWebCorescons">trunk/WebCore/WebCore.scons</a></li>
<li><a href="#trunkWebCoreWebCorevcprojWebCorevcproj">trunk/WebCore/WebCore.vcproj/WebCore.vcproj</a></li>
 <li><a href="#trunkWebCoreWebCorexcodeprojprojectpbxproj">trunk/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
 <li><a href="#trunkWebCoreWebCoreSourcesbkl">trunk/WebCore/WebCoreSources.bkl</a></li>
 <li><a href="#trunkWebCoreloaderFrameLoadercpp">trunk/WebCore/loader/FrameLoader.cpp</a></li>
 <li><a href="#trunkWebCoreloaderTextResourceDecodercpp">trunk/WebCore/loader/TextResourceDecoder.cpp</a></li>
 <li><a href="#trunkWebCoreloaderTextResourceDecoderh">trunk/WebCore/loader/TextResourceDecoder.h</a></li>
 <li><a href="#trunkWebCorepageSettingscpp">trunk/WebCore/page/Settings.cpp</a></li>
<li><a href="#trunkWebCorepageSettingsh">trunk/WebCore/page/Settings.h</a></li>
<li><a href="#trunkWebKitmacChangeLog">trunk/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkWebKitmacWebViewWebPreferenceKeysPrivateh">trunk/WebKit/mac/WebView/WebPreferenceKeysPrivate.h</a></li>
 <li><a href="#trunkWebKitmacWebViewWebPreferencesmm">trunk/WebKit/mac/WebView/WebPreferences.mm</a></li>
 <li><a href="#trunkWebKitmacWebViewWebPreferencesPrivateh">trunk/WebKit/mac/WebView/WebPreferencesPrivate.h</a></li>
 <li><a href="#trunkWebKitmacWebViewWebViewmm">trunk/WebKit/mac/WebView/WebView.mm</a></li>
 </ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/ChangeLog (42021 => 42022)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/ChangeLog	2009-03-26 23:50:00 UTC (rev 42021)
+++ trunk/WebCore/ChangeLog	2009-03-27 00:01:58 UTC (rev 42022)
</span><span class="lines">@@ -1,3 +1,57 @@
</span><ins>+2009-03-26  Jungshik Shin  &lt;jshin@chromium.org&gt;
+
+        Reviewed by Alexey Proskuryakov.
+
+        Add an encoding detector 'hook' to TextResourceDecoder.
+         - add |usesEncodingDetector| to Settings. It's off by default.
+         - add a new encoding source type |EncodingFromParent| 
+           to distinguish cases when the encoding is inherited from
+           the parent frame from cases when it's actually auto-detected.
+         - add TextEncodingDetector* to platform/text. Currently,
+           the only implementation uses ICU. Stub is added for 
+           ports that do not use ICU and a build on Tiger. Mac OS 
+           Tiger comes with ICU 3.2 that does not support encoding detector.
+         - add ucsdet.h to icu/unicode for ports using ICU.
+
+        Layout tests will be added once bug 20534 is fixed and a WebPreference
+        can be controlled in test_shell. With UsesEncodingDetector off, there
+        is no change to test. 
+
+        http://bugs.webkit.org/show_bug.cgi?id=16482
+
+        * WebCore.vcproj/WebCore.vcproj:
+        * WebCore.xcodeproj/project.pbxproj:
+        * WebCore/GNUmakefile.am
+        * WebCore/WebCore.pro
+        * WebCore/WebCore.scons
+        * WebCore/WebCoreSources.bkl
+        * WebCore.base.exp
+        * icu/unicode/ucsdet.h
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::write): turn on/off encoding detector depending on \
Settings and set hintEncoding of TextResourceDecoder to the parent frame encoding if \
necessary and the security policy allows refering to the parent frame encoding. +     \
* loader/TextResourceDecoder.cpp: +        \
(WebCore::TextResourceDecoder::TextResourceDecoder): +        \
(WebCore::TextResourceDecoder::checkForCSSCharset): add check for \
EncodingFromParentFrame +        (WebCore::TextResourceDecoder::checkForHeadCharset): \
ditto +        (WebCore::TextResourceDecoder::shouldAutoDetect):
+        (WebCore::TextResourceDecoder::decode): call encoding detector if \
shouldAutoDetect returns true. +        (WebCore::TextResourceDecoder::flush): if \
encoding is not determined by now, call encoding detector if shouldAutoDetect returns \
true. +        * loader/TextResourceDecoder.h:
+        (WebCore::TextResourceDecoder::):
+        (WebCore::TextResourceDecoder::create):
+        (WebCore::TextResourceDecoder::setHintEncoding):
+        (WebCore::TextResourceDecoder::source):
+        * page/Settings.cpp: add m_usesEncodingDetector
+        (WebCore::Settings::Settings):
+        (WebCore::Settings::setUsesEncodingDetector):
+        * page/Settings.h:
+        (WebCore::Settings::usesEncodingDetector):
+        * platform/text/TextEncodingDetector.h: Added.
+        * platform/text/TextEncodingDetectorICU.cpp: Added.
+        (WebCore::detectTextEncoding):
+        * platform/text/TextEncodingDetectorNone.cpp: Added.
+        (WebCore::detectTextEncoding):
+
</ins><span class="cx"> 2009-03-26  Darin Adler  &lt;darin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Reviewed by Geoff Garen.
</span></span></pre></div>
<a id="trunkWebCoreGNUmakefileam"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/GNUmakefile.am (42021 => 42022)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/GNUmakefile.am	2009-03-26 23:50:00 UTC (rev \
                42021)
+++ trunk/WebCore/GNUmakefile.am	2009-03-27 00:01:58 UTC (rev 42022)
</span><span class="lines">@@ -1496,6 +1496,8 @@
</span><span class="cx"> 	WebCore/platform/text/TextDirection.h \
</span><span class="cx"> 	WebCore/platform/text/TextEncoding.cpp \
</span><span class="cx"> 	WebCore/platform/text/TextEncoding.h \
</span><ins>+	WebCore/platform/text/TextEncodingDetector.h \
+	WebCore/platform/text/TextEncodingDetectorNone.cpp \
</ins><span class="cx"> 	WebCore/platform/text/TextEncodingRegistry.cpp \
</span><span class="cx"> 	WebCore/platform/text/TextEncodingRegistry.h \
</span><span class="cx"> 	WebCore/platform/text/TextStream.cpp \
</span></span></pre></div>
<a id="trunkWebCoreWebCorebaseexp"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/WebCore.base.exp (42021 => \
42022)</h4> <pre class="diff"><span>
<span class="info">--- trunk/WebCore/WebCore.base.exp	2009-03-26 23:50:00 UTC (rev \
                42021)
+++ trunk/WebCore/WebCore.base.exp	2009-03-27 00:01:58 UTC (rev 42022)
</span><span class="lines">@@ -409,7 +409,7 @@
</span><span class="cx"> __ZN7WebCore19SelectionControllerC1EPNS_5FrameEb
</span><span class="cx"> __ZN7WebCore19TextResourceDecoder5flushEv
</span><span class="cx"> __ZN7WebCore19TextResourceDecoder6decodeEPKcm
</span><del>-__ZN7WebCore19TextResourceDecoderC1ERKNS_6StringERKNS_12TextEncodingE
</del><ins>+__ZN7WebCore19TextResourceDecoderC1ERKNS_6StringERKNS_12TextEncodingEb
</ins><span class="cx"> __ZN7WebCore19TextResourceDecoderD1Ev
</span><span class="cx"> \
__ZN7WebCore20ResourceResponseBase24setExpectedContentLengthEx </span><span \
class="cx"> __ZN7WebCore21ContextMenuController16clearContextMenuEv </span><span \
class="lines">@@ -603,6 +603,7 @@ </span><span class="cx"> \
__ZN7WebCore8Settings23setDefaultFixedFontSizeEi </span><span class="cx"> \
__ZN7WebCore8Settings23setEditableLinkBehaviorENS_20EditableLinkBehaviorE \
</span><span class="cx"> __ZN7WebCore8Settings23setNeedsTigerMailQuirksEb \
</span><ins>+__ZN7WebCore8Settings23setUsesEncodingDetectorEb </ins><span class="cx"> \
__ZN7WebCore8Settings24setApplicationChromeModeEb </span><span class="cx"> \
__ZN7WebCore8Settings24setTextAreasAreResizableEb </span><span class="cx"> \
__ZN7WebCore8Settings25setDeveloperExtrasEnabledEb </span></span></pre></div>
<a id="trunkWebCoreWebCorepro"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/WebCore.pro (42021 => 42022)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/WebCore.pro	2009-03-26 23:50:00 UTC (rev 42021)
+++ trunk/WebCore/WebCore.pro	2009-03-27 00:01:58 UTC (rev 42022)
</span><span class="lines">@@ -963,6 +963,7 @@
</span><span class="cx">     platform/text/TextCodecUserDefined.cpp \
</span><span class="cx">     platform/text/TextCodecUTF16.cpp \
</span><span class="cx">     platform/text/TextEncoding.cpp \
</span><ins>+    platform/text/TextEncodingDetectorNone.cpp \
</ins><span class="cx">     platform/text/TextEncodingRegistry.cpp \
</span><span class="cx">     platform/text/TextStream.cpp \
</span><span class="cx">     platform/ThreadGlobalData.cpp \
</span></span></pre></div>
<a id="trunkWebCoreWebCorescons"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/WebCore.scons (42021 => 42022)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/WebCore.scons	2009-03-26 23:50:00 UTC (rev \
                42021)
+++ trunk/WebCore/WebCore.scons	2009-03-27 00:01:58 UTC (rev 42022)
</span><span class="lines">@@ -840,6 +840,7 @@
</span><span class="cx">     'platform/text/TextCodecUserDefined.cpp',
</span><span class="cx">     'platform/text/TextCodecUTF16.cpp',
</span><span class="cx">     'platform/text/TextEncoding.cpp',
</span><ins>+    'platform/text/TextEncodingDetectorICU.cpp',
</ins><span class="cx">     'platform/text/TextEncodingRegistry.cpp',
</span><span class="cx">     'platform/text/TextStream.cpp',
</span><span class="cx">     'platform/text/UnicodeRange.cpp',
</span></span></pre></div>
<a id="trunkWebCoreWebCorevcprojWebCorevcproj"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/WebCore.vcproj/WebCore.vcproj (42021 \
=> 42022)</h4> <pre class="diff"><span>
<span class="info">--- trunk/WebCore/WebCore.vcproj/WebCore.vcproj	2009-03-26 \
                23:50:00 UTC (rev 42021)
+++ trunk/WebCore/WebCore.vcproj/WebCore.vcproj	2009-03-27 00:01:58 UTC (rev 42022)
</span><span class="lines">@@ -6773,6 +6773,14 @@
</span><span class="cx"> 					&gt;
</span><span class="cx"> 				&lt;/File&gt;
</span><span class="cx"> 				&lt;File
</span><ins>+					RelativePath=&quot;..\platform\text\TextEncodingDetectorICU.cpp&quot;
 +					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\platform\text\TextEncodingDetector.h&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
</ins><span class="cx"> \
RelativePath=&quot;..\platform\text\TextEncodingRegistry.cpp&quot; </span><span \
class="cx"> 					&gt; </span><span class="cx"> 				&lt;/File&gt;
</span></span></pre></div>
<a id="trunkWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/WebCore.xcodeproj/project.pbxproj \
(42021 => 42022)</h4> <pre class="diff"><span>
<span class="info">--- trunk/WebCore/WebCore.xcodeproj/project.pbxproj	2009-03-26 \
                23:50:00 UTC (rev 42021)
+++ trunk/WebCore/WebCore.xcodeproj/project.pbxproj	2009-03-27 00:01:58 UTC (rev \
42022) </span><span class="lines">@@ -4303,6 +4303,8 @@
</span><span class="cx"> 		C091588E0DB4209200E55AF4 /* JSQuarantinedObjectWrapper.cpp \
in Sources */ = {isa = PBXBuildFile; fileRef = C09158880DB4209200E55AF4 /* \
JSQuarantinedObjectWrapper.cpp */; }; </span><span class="cx"> \
C091588F0DB4209200E55AF4 /* JSQuarantinedObjectWrapper.h in Headers */ = {isa = \
PBXBuildFile; fileRef = C09158890DB4209200E55AF4 /* JSQuarantinedObjectWrapper.h */; \
}; </span><span class="cx"> 		C0DFC8700DB6841A003EAE7C /* JSConsoleCustom.cpp in \
Sources */ = {isa = PBXBuildFile; fileRef = C0DFC86F0DB6841A003EAE7C /* \
JSConsoleCustom.cpp */; }; </span><ins>+		C105DA620F3AA68F001DD44F /* \
TextEncodingDetectorICU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = \
C105DA610F3AA68F001DD44F /* TextEncodingDetectorICU.cpp */; }; \
+		C105DA640F3AA6B8001DD44F /* TextEncodingDetector.h in Headers */ = {isa = \
PBXBuildFile; fileRef = C105DA630F3AA6B8001DD44F /* TextEncodingDetector.h */; }; \
</ins><span class="cx"> 		C6D74AD509AA282E000B0A52 /* ModifySelectionListLevel.h in \
Headers */ = {isa = PBXBuildFile; fileRef = C6D74AD309AA282E000B0A52 /* \
ModifySelectionListLevel.h */; }; </span><span class="cx"> 		C6D74AE409AA290A000B0A52 \
/* ModifySelectionListLevel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = \
C6D74AE309AA290A000B0A52 /* ModifySelectionListLevel.cpp */; }; </span><span \
class="cx"> 		D05CED290A40BB2C00C5AF38 /* FormatBlockCommand.cpp in Sources */ = {isa \
= PBXBuildFile; fileRef = D05CED270A40BB2C00C5AF38 /* FormatBlockCommand.cpp */; }; \
</span><span class="lines">@@ -9155,6 +9157,8 @@ </span><span class="cx"> \
C09158880DB4209200E55AF4 /* JSQuarantinedObjectWrapper.cpp */ = {isa = \
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = \
JSQuarantinedObjectWrapper.cpp; sourceTree = &quot;&lt;group&gt;&quot;; }; \
</span><span class="cx"> 		C09158890DB4209200E55AF4 /* JSQuarantinedObjectWrapper.h \
*/ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; \
path = JSQuarantinedObjectWrapper.h; sourceTree = &quot;&lt;group&gt;&quot;; }; \
</span><span class="cx"> 		C0DFC86F0DB6841A003EAE7C /* JSConsoleCustom.cpp */ = {isa \
= PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = \
JSConsoleCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; }; \
</span><ins>+		C105DA610F3AA68F001DD44F /* TextEncodingDetectorICU.cpp */ = {isa = \
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = \
TextEncodingDetectorICU.cpp; sourceTree = &quot;&lt;group&gt;&quot;; }; \
+		C105DA630F3AA6B8001DD44F /* TextEncodingDetector.h */ = {isa = PBXFileReference; \
fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextEncodingDetector.h; \
sourceTree = &quot;&lt;group&gt;&quot;; }; </ins><span class="cx"> \
C6D74AD309AA282E000B0A52 /* ModifySelectionListLevel.h */ = {isa = PBXFileReference; \
fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \
ModifySelectionListLevel.h; sourceTree = &quot;&lt;group&gt;&quot;; }; </span><span \
class="cx"> 		C6D74AE309AA290A000B0A52 /* ModifySelectionListLevel.cpp */ = {isa = \
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = \
ModifySelectionListLevel.cpp; sourceTree = &quot;&lt;group&gt;&quot;; }; </span><span \
class="cx"> 		D05CED270A40BB2C00C5AF38 /* FormatBlockCommand.cpp */ = {isa = \
PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = \
FormatBlockCommand.cpp; sourceTree = &quot;&lt;group&gt;&quot;; }; </span><span \
class="lines">@@ -13336,6 +13340,8 @@ </span><span class="cx"> \
B2C3DA150D006C1D00EF6F26 /* TextDirection.h */, </span><span class="cx"> \
B2C3DA160D006C1D00EF6F26 /* TextEncoding.cpp */, </span><span class="cx"> \
B2C3DA170D006C1D00EF6F26 /* TextEncoding.h */, \
</span><ins>+				C105DA630F3AA6B8001DD44F /* TextEncodingDetector.h */, \
+				C105DA610F3AA68F001DD44F /* TextEncodingDetectorICU.cpp */, </ins><span \
class="cx"> 				B2C3DA180D006C1D00EF6F26 /* TextEncodingRegistry.cpp */, </span><span \
class="cx"> 				B2C3DA190D006C1D00EF6F26 /* TextEncodingRegistry.h */, </span><span \
class="cx"> 				B2C3DA1A0D006C1D00EF6F26 /* TextStream.cpp */, </span><span \
class="lines">@@ -16708,6 +16714,7 @@ </span><span class="cx"> \
B2C3DA450D006C1D00EF6F26 /* TextDirection.h in Headers */, </span><span class="cx"> \
1A6938020A11100A00C127FE /* TextDocument.h in Headers */, </span><span class="cx"> \
B2C3DA470D006C1D00EF6F26 /* TextEncoding.h in Headers */, \
</span><ins>+				C105DA640F3AA6B8001DD44F /* TextEncodingDetector.h in Headers */, \
</ins><span class="cx"> 				B2C3DA490D006C1D00EF6F26 /* TextEncodingRegistry.h in \
Headers */, </span><span class="cx"> 				933A14300B7D188600A53FFD /* TextEvent.h in \
Headers */, </span><span class="cx"> 				93309E18099E64920056E581 /* \
TextGranularity.h in Headers */, </span><span class="lines">@@ -18739,6 +18746,7 @@
</span><span class="cx"> 				AB014DE30E689A4300E10445 /* TextControlInnerElements.cpp \
in Sources */, </span><span class="cx"> 				1A6938010A11100A00C127FE /* \
TextDocument.cpp in Sources */, </span><span class="cx"> 				B2C3DA460D006C1D00EF6F26 \
/* TextEncoding.cpp in Sources */, </span><ins>+				C105DA620F3AA68F001DD44F /* \
TextEncodingDetectorICU.cpp in Sources */, </ins><span class="cx"> \
B2C3DA480D006C1D00EF6F26 /* TextEncodingRegistry.cpp in Sources */, </span><span \
class="cx"> 				933A142E0B7D188600A53FFD /* TextEvent.cpp in Sources */, </span><span \
class="cx"> 				93309E1B099E64920056E581 /* TextIterator.cpp in Sources */, \
</span></span></pre></div> <a id="trunkWebCoreWebCoreSourcesbkl"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/WebCoreSources.bkl (42021 => \
42022)</h4> <pre class="diff"><span>
<span class="info">--- trunk/WebCore/WebCoreSources.bkl	2009-03-26 23:50:00 UTC (rev \
                42021)
+++ trunk/WebCore/WebCoreSources.bkl	2009-03-27 00:01:58 UTC (rev 42022)
</span><span class="lines">@@ -780,6 +780,7 @@
</span><span class="cx">         platform/text/TextCodecUTF16.cpp
</span><span class="cx">         platform/text/TextCodecUserDefined.cpp
</span><span class="cx">         platform/text/TextEncoding.cpp
</span><ins>+        platform/text/TextEncodingDetectorICU.cpp
</ins><span class="cx">         platform/text/TextEncodingRegistry.cpp
</span><span class="cx">         platform/text/TextStream.cpp
</span><span class="cx">         platform/ThreadGlobalData.cpp
</span></span></pre></div>
<a id="trunkWebCoreloaderFrameLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/loader/FrameLoader.cpp (42021 => \
42022)</h4> <pre class="diff"><span>
<span class="info">--- trunk/WebCore/loader/FrameLoader.cpp	2009-03-26 23:50:00 UTC \
                (rev 42021)
+++ trunk/WebCore/loader/FrameLoader.cpp	2009-03-27 00:01:58 UTC (rev 42022)
</span><span class="lines">@@ -253,6 +253,11 @@
</span><span class="cx">     return document-&gt;docLoader()-&gt;requestCount();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static inline bool canReferToParentFrameEncoding(const Frame* frame, \
const Frame* parentFrame)  +{
+    return parentFrame &amp;&amp; \
parentFrame-&gt;document()-&gt;securityOrigin()-&gt;canAccess(frame-&gt;document()-&gt;securityOrigin());
 +}
+
</ins><span class="cx"> FrameLoader::FrameLoader(Frame* frame, FrameLoaderClient* \
client) </span><span class="cx">     : m_frame(frame)
</span><span class="cx">     , m_client(client)
</span><span class="lines">@@ -997,12 +1002,28 @@
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     if (!m_decoder) {
</span><del>-        Settings* settings = m_frame-&gt;settings();
-        m_decoder = TextResourceDecoder::create(m_responseMIMEType, settings ? \
settings-&gt;defaultTextEncodingName() : String()); </del><ins>+        if (Settings* \
settings = m_frame-&gt;settings()) { +            m_decoder = \
TextResourceDecoder::create(m_responseMIMEType, +                \
settings-&gt;defaultTextEncodingName(), +                \
settings-&gt;usesEncodingDetector()); +            Frame* parentFrame = \
m_frame-&gt;tree()-&gt;parent(); +            // Set the hint encoding to the parent \
frame encoding only if +            // the parent and the current frames share the \
security origin. +            // We impose this condition because somebody can make a \
child frame  +            // containing a carefully crafted html/javascript in one \
encoding +            // that can be mistaken for hintEncoding (or related encoding) \
by +            // an auto detector. When interpreted in the latter, it could be
+            // an attack vector.
+            // FIXME: This might be too cautious for non-7bit-encodings and
+            // we may consider relaxing this later after testing.
+            if (canReferToParentFrameEncoding(m_frame, parentFrame))
+                m_decoder-&gt;setHintEncoding(parentFrame-&gt;document()-&gt;decoder());
 +        } else
+            m_decoder = TextResourceDecoder::create(m_responseMIMEType, String());
+        Frame* parentFrame = m_frame-&gt;tree()-&gt;parent();
</ins><span class="cx">         if (m_encoding.isEmpty()) {
</span><del>-            Frame* parentFrame = m_frame-&gt;tree()-&gt;parent();
-            if (parentFrame &amp;&amp; \
parentFrame-&gt;document()-&gt;securityOrigin()-&gt;canAccess(m_frame-&gt;document()-&gt;securityOrigin()))
                
-                m_decoder-&gt;setEncoding(parentFrame-&gt;document()-&gt;inputEncoding(), \
TextResourceDecoder::DefaultEncoding); </del><ins>+            if \
(canReferToParentFrameEncoding(m_frame, parentFrame)) +                \
m_decoder-&gt;setEncoding(parentFrame-&gt;document()-&gt;inputEncoding(), \
TextResourceDecoder::EncodingFromParentFrame); </ins><span class="cx">         } else \
{ </span><span class="cx">             m_decoder-&gt;setEncoding(m_encoding,
</span><span class="cx">                 m_encodingWasChosenByUser ? \
TextResourceDecoder::UserChosenEncoding : \
TextResourceDecoder::EncodingFromHTTPHeader); </span></span></pre></div>
<a id="trunkWebCoreloaderTextResourceDecodercpp"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/loader/TextResourceDecoder.cpp \
(42021 => 42022)</h4> <pre class="diff"><span>
<span class="info">--- trunk/WebCore/loader/TextResourceDecoder.cpp	2009-03-26 \
                23:50:00 UTC (rev 42021)
+++ trunk/WebCore/loader/TextResourceDecoder.cpp	2009-03-27 00:01:58 UTC (rev 42022)
</span><span class="lines">@@ -26,6 +26,8 @@
</span><span class="cx"> #include &quot;DOMImplementation.h&quot;
</span><span class="cx"> #include &quot;HTMLNames.h&quot;
</span><span class="cx"> #include &quot;TextCodec.h&quot;
</span><ins>+#include &quot;TextEncoding.h&quot;
+#include &quot;TextEncodingDetector.h&quot;
</ins><span class="cx"> #include &quot;TextEncodingRegistry.h&quot;
</span><span class="cx"> #include &lt;wtf/ASCIICType.h&gt;
</span><span class="cx"> #include &lt;wtf/StringExtras.h&gt;
</span><span class="lines">@@ -321,15 +323,17 @@
</span><span class="cx">     return specifiedDefaultEncoding;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-TextResourceDecoder::TextResourceDecoder(const String&amp; mimeType, \
const TextEncoding&amp; specifiedDefaultEncoding) \
</del><ins>+TextResourceDecoder::TextResourceDecoder(const String&amp; mimeType, \
const TextEncoding&amp; specifiedDefaultEncoding, bool usesEncodingDetector) \
</ins><span class="cx">     : m_contentType(determineContentType(mimeType)) \
</span><span class="cx">     , m_encoding(defaultEncoding(m_contentType, \
specifiedDefaultEncoding)) </span><span class="cx">     , m_source(DefaultEncoding)
</span><ins>+    , m_hintEncoding(0)
</ins><span class="cx">     , m_checkedForBOM(false)
</span><span class="cx">     , m_checkedForCSSCharset(false)
</span><span class="cx">     , m_checkedForHeadCharset(false)
</span><span class="cx">     , m_useLenientXMLDecoding(false)
</span><span class="cx">     , m_sawError(false)
</span><ins>+    , m_usesEncodingDetector(usesEncodingDetector)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -451,7 +455,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool TextResourceDecoder::checkForCSSCharset(const char* \
data, size_t len, bool&amp; movedDataToBuffer) </span><span class="cx"> {
</span><del>-    if (m_source != DefaultEncoding) {
</del><ins>+    if (m_source != DefaultEncoding &amp;&amp; m_source != \
EncodingFromParentFrame) { </ins><span class="cx">         m_checkedForCSSCharset = \
true; </span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="lines">@@ -532,7 +536,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool TextResourceDecoder::checkForHeadCharset(const char* \
data, size_t len, bool&amp; movedDataToBuffer) </span><span class="cx"> {
</span><del>-    if (m_source != DefaultEncoding) {
</del><ins>+    if (m_source != DefaultEncoding &amp;&amp; m_source != \
EncodingFromParentFrame) { </ins><span class="cx">         m_checkedForHeadCharset = \
true; </span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="lines">@@ -759,6 +763,23 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+// We use the encoding detector in two cases:
+//   1. Encoding detector is turned ON and no other encoding source is
+//      available (that is, it's DefaultEncoding).
+//   2. Encoding detector is turned ON and the encoding is set to
+//      the encoding of the parent frame, which is also auto-detected.
+//   Note that condition #2 is NOT satisfied unless parent-child frame
+//   relationship is compliant to the same-origin policy. If they're from
+//   different domains, |m_source| would not be set to EncodingFromParentFrame
+//   in the first place. 
+bool TextResourceDecoder::shouldAutoDetect() const
+{
+    // Just checking m_hintEncoding suffices here because it's only set
+    // in setHintEncoding when the source is AutoDetectedEncoding.
+    return m_usesEncodingDetector
+        &amp;&amp; (m_source == DefaultEncoding || (m_source == \
EncodingFromParentFrame &amp;&amp; m_hintEncoding));  +}
+
</ins><span class="cx"> String TextResourceDecoder::decode(const char* data, size_t \
len) </span><span class="cx"> {
</span><span class="cx">     size_t lengthOfBOM = 0;
</span><span class="lines">@@ -775,10 +796,24 @@
</span><span class="cx">         if (!checkForHeadCharset(data, len, \
movedDataToBuffer)) </span><span class="cx">             return &quot;&quot;;
</span><span class="cx"> 
</span><del>-    // Do the auto-detect if our default encoding is one of the Japanese \
                ones.
-    // FIXME: It seems wrong to change our encoding downstream after we have already \
done some decoding. </del><ins>+    // FIXME: It seems wrong to change our encoding \
downstream after +    // we have already done some decoding. However, it's not \
possible +    // to avoid in a sense in two cases below because triggering conditions
+    // for both cases depend on the information that won't be available
+    // until we do partial read. 
+    // The first case had better be removed altogether (see bug 21990)
+    // or at least be made to be invoked only when the encoding detection
+    // is turned on. 
+    // Do the auto-detect 1) using Japanese detector if our default encoding is
+    // one of the Japanese detector or 2) using detectTextEncoding if encoding
+    // detection is turned on.
</ins><span class="cx">     if (m_source != UserChosenEncoding &amp;&amp; m_source != \
AutoDetectedEncoding &amp;&amp; m_encoding.isJapanese()) </span><span class="cx">     \
detectJapaneseEncoding(data, len); </span><ins>+    else if (shouldAutoDetect()) {
+        TextEncoding detectedEncoding;
+        if (detectTextEncoding(data, len, m_hintEncoding, &amp;detectedEncoding))
+            setEncoding(detectedEncoding, AutoDetectedEncoding);
+    }
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(m_encoding.isValid());
</span><span class="cx"> 
</span><span class="lines">@@ -801,6 +836,17 @@
</span><span class="cx"> 
</span><span class="cx"> String TextResourceDecoder::flush()
</span><span class="cx"> {
</span><ins>+   // If we can not identify the encoding even after a document is \
completely +   // loaded, we need to detect the encoding if other conditions for
+   // autodetection is satisfied.
+    if (m_buffer.size() &amp;&amp; shouldAutoDetect()
+        &amp;&amp; ((!m_checkedForHeadCharset &amp;&amp; (m_contentType == HTML || \
m_contentType == XML)) || (!m_checkedForCSSCharset &amp;&amp; (m_contentType == \
CSS)))) { +         TextEncoding detectedEncoding;
+         if (detectTextEncoding(m_buffer.data(), m_buffer.size(),
+                                m_hintEncoding, &amp;detectedEncoding))
+             setEncoding(detectedEncoding, AutoDetectedEncoding);
+    }
+
</ins><span class="cx">     if (!m_codec)
</span><span class="cx">         m_codec.set(newTextCodec(m_encoding).release());
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkWebCoreloaderTextResourceDecoderh"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/loader/TextResourceDecoder.h (42021 \
=> 42022)</h4> <pre class="diff"><span>
<span class="info">--- trunk/WebCore/loader/TextResourceDecoder.h	2009-03-26 23:50:00 \
                UTC (rev 42021)
+++ trunk/WebCore/loader/TextResourceDecoder.h	2009-03-27 00:01:58 UTC (rev 42022)
</span><span class="lines">@@ -36,12 +36,13 @@
</span><span class="cx">         EncodingFromMetaTag,
</span><span class="cx">         EncodingFromCSSCharset,
</span><span class="cx">         EncodingFromHTTPHeader,
</span><del>-        UserChosenEncoding
</del><ins>+        UserChosenEncoding,
+        EncodingFromParentFrame
</ins><span class="cx">     };
</span><span class="cx"> 
</span><del>-    static PassRefPtr&lt;TextResourceDecoder&gt; create(const \
String&amp; mimeType, const TextEncoding&amp; defaultEncoding = TextEncoding()) \
</del><ins>+    static PassRefPtr&lt;TextResourceDecoder&gt; create(const String&amp; \
mimeType, const TextEncoding&amp; defaultEncoding = TextEncoding(), bool \
usesEncodingDetector = false) </ins><span class="cx">     {
</span><del>-        return adoptRef(new TextResourceDecoder(mimeType, \
defaultEncoding)); </del><ins>+        return adoptRef(new \
TextResourceDecoder(mimeType, defaultEncoding, usesEncodingDetector)); </ins><span \
class="cx">     } </span><span class="cx">     ~TextResourceDecoder();
</span><span class="cx"> 
</span><span class="lines">@@ -51,11 +52,20 @@
</span><span class="cx">     String decode(const char* data, size_t length);
</span><span class="cx">     String flush();
</span><span class="cx"> 
</span><ins>+    void setHintEncoding(const TextResourceDecoder* hintDecoder)
+    {
+        // hintEncoding is for use with autodetection, which should be 
+        // only invoked  when hintEncoding comes from auto-detection.
+        if (hintDecoder-&gt;m_source == AutoDetectedEncoding)
+            m_hintEncoding = hintDecoder-&gt;encoding().name();
+    }
+   
</ins><span class="cx">     void useLenientXMLDecoding() { m_useLenientXMLDecoding = \
true; } </span><span class="cx">     bool sawError() const { return m_sawError; }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    TextResourceDecoder(const String&amp; mimeType, const \
TextEncoding&amp; defaultEncoding); </del><ins>+    TextResourceDecoder(const \
String&amp; mimeType, const TextEncoding&amp; defaultEncoding, +                      \
bool usesEncodingDetector); </ins><span class="cx"> 
</span><span class="cx">     enum ContentType { PlainText, HTML, XML, CSS }; // \
PlainText only checks for BOM. </span><span class="cx">     static ContentType \
determineContentType(const String&amp; mimeType); </span><span class="lines">@@ \
-65,17 +75,20 @@ </span><span class="cx">     bool checkForCSSCharset(const char*, \
size_t, bool&amp; movedDataToBuffer); </span><span class="cx">     bool \
checkForHeadCharset(const char*, size_t, bool&amp; movedDataToBuffer); </span><span \
class="cx">     void detectJapaneseEncoding(const char*, size_t); </span><ins>+    \
bool shouldAutoDetect() const; </ins><span class="cx"> 
</span><span class="cx">     ContentType m_contentType;
</span><span class="cx">     TextEncoding m_encoding;
</span><span class="cx">     OwnPtr&lt;TextCodec&gt; m_codec;
</span><span class="cx">     EncodingSource m_source;
</span><ins>+    const char* m_hintEncoding;
</ins><span class="cx">     Vector&lt;char&gt; m_buffer;
</span><span class="cx">     bool m_checkedForBOM;
</span><span class="cx">     bool m_checkedForCSSCharset;
</span><span class="cx">     bool m_checkedForHeadCharset;
</span><span class="cx">     bool m_useLenientXMLDecoding; // Don't stop on XML \
decoding errors. </span><span class="cx">     bool m_sawError;
</span><ins>+    bool m_usesEncodingDetector;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkWebCorepageSettingscpp"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/page/Settings.cpp (42021 => \
42022)</h4> <pre class="diff"><span>
<span class="info">--- trunk/WebCore/page/Settings.cpp	2009-03-26 23:50:00 UTC (rev \
                42021)
+++ trunk/WebCore/page/Settings.cpp	2009-03-27 00:01:58 UTC (rev 42022)
</span><span class="lines">@@ -87,6 +87,7 @@
</span><span class="cx">     , m_shouldPaintCustomScrollbars(false)
</span><span class="cx">     , m_zoomsTextOnly(false)
</span><span class="cx">     , m_enforceCSSMIMETypeInStrictMode(true)
</span><ins>+    , m_usesEncodingDetector(false)
</ins><span class="cx">     , \
m_maximumDecodedImageSize(std::numeric_limits&lt;size_t&gt;::max()) </span><span \
class="cx">     , m_allowScriptsToCloseWindows(false) </span><span class="cx"> {
</span><span class="lines">@@ -424,6 +425,11 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+void Settings::setUsesEncodingDetector(bool usesEncodingDetector)
+{
+    m_usesEncodingDetector = usesEncodingDetector;
+}
+
</ins><span class="cx"> void Settings::setAllowScriptsToCloseWindows(bool \
allowScriptsToCloseWindows) </span><span class="cx"> {
</span><span class="cx">     m_allowScriptsToCloseWindows = \
allowScriptsToCloseWindows; </span></span></pre></div>
<a id="trunkWebCorepageSettingsh"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/page/Settings.h (42021 => \
42022)</h4> <pre class="diff"><span>
<span class="info">--- trunk/WebCore/page/Settings.h	2009-03-26 23:50:00 UTC (rev \
                42021)
+++ trunk/WebCore/page/Settings.h	2009-03-27 00:01:58 UTC (rev 42022)
</span><span class="lines">@@ -115,6 +115,9 @@
</span><span class="cx">         
</span><span class="cx">         void setDefaultTextEncodingName(const String&amp;);
</span><span class="cx">         const String&amp; defaultTextEncodingName() const { \
return m_defaultTextEncodingName; } </span><ins>+        
+        void setUsesEncodingDetector(bool);
+        bool usesEncodingDetector() const { return m_usesEncodingDetector; }
</ins><span class="cx"> 
</span><span class="cx">         void setUserStyleSheetLocation(const KURL&amp;);
</span><span class="cx">         const KURL&amp; userStyleSheetLocation() const { \
return m_userStyleSheetLocation; } </span><span class="lines">@@ -264,6 +267,7 @@
</span><span class="cx">         bool m_shouldPaintCustomScrollbars : 1;
</span><span class="cx">         bool m_zoomsTextOnly : 1;
</span><span class="cx">         bool m_enforceCSSMIMETypeInStrictMode : 1;
</span><ins>+        bool m_usesEncodingDetector : 1;
</ins><span class="cx">         size_t m_maximumDecodedImageSize;
</span><span class="cx">         bool m_allowScriptsToCloseWindows : 1;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/WebKit/mac/ChangeLog (42021 => 42022)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebKit/mac/ChangeLog	2009-03-26 23:50:00 UTC (rev 42021)
+++ trunk/WebKit/mac/ChangeLog	2009-03-27 00:01:58 UTC (rev 42022)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2009-03-26  Jungshik Shin  &lt;jshin@chromium.org&gt;
+
+        Reviewed by Alexey Proskuryakov.
+
+        Add WebPreferences for encoding autodetection on Mac.
+  
+        http://bugs.webkit.org/show_bug.cgi?id=16482
+
+        * WebView/WebPreferenceKeysPrivate.h:
+        * WebView/WebPreferences.mm:
+        (+[WebPreferences initialize]):
+        (-[WebPreferences usesEncodingDetector]):
+        (-[WebPreferences setUsesEncodingDetector:]):
+        * WebView/WebPreferencesPrivate.h:
+        * WebView/WebView.mm:
+        (-[WebView _preferencesChangedNotification:]):
+
</ins><span class="cx"> 2009-03-26  Anders Carlsson  &lt;andersca@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Reviewed by Dan Bernstein.
</span></span></pre></div>
<a id="trunkWebKitmacWebViewWebPreferenceKeysPrivateh"></a>
<div class="modfile"><h4>Modified: \
trunk/WebKit/mac/WebView/WebPreferenceKeysPrivate.h (42021 => 42022)</h4> <pre \
class="diff"><span> <span class="info">--- \
trunk/WebKit/mac/WebView/WebPreferenceKeysPrivate.h	2009-03-26 23:50:00 UTC (rev \
                42021)
+++ trunk/WebKit/mac/WebView/WebPreferenceKeysPrivate.h	2009-03-27 00:01:58 UTC (rev \
42022) </span><span class="lines">@@ -41,6 +41,7 @@
</span><span class="cx"> #define WebKitDefaultFontSizePreferenceKey \
@&quot;WebKitDefaultFontSize&quot; </span><span class="cx"> #define \
WebKitDefaultFixedFontSizePreferenceKey @&quot;WebKitDefaultFixedFontSize&quot; \
</span><span class="cx"> #define WebKitDefaultTextEncodingNamePreferenceKey \
@&quot;WebKitDefaultTextEncodingName&quot; </span><ins>+#define \
WebKitUsesEncodingDetectorPreferenceKey @&quot;WebKitUsesEncodingDetector&quot; \
</ins><span class="cx"> #define WebKitUserStyleSheetEnabledPreferenceKey \
@&quot;WebKitUserStyleSheetEnabledPreferenceKey&quot; </span><span class="cx"> \
#define WebKitUserStyleSheetLocationPreferenceKey \
@&quot;WebKitUserStyleSheetLocationPreferenceKey&quot; </span><span class="cx"> \
#define WebKitShouldPrintBackgroundsPreferenceKey \
@&quot;WebKitShouldPrintBackgroundsPreferenceKey&quot; </span></span></pre></div>
<a id="trunkWebKitmacWebViewWebPreferencesmm"></a>
<div class="modfile"><h4>Modified: trunk/WebKit/mac/WebView/WebPreferences.mm (42021 \
=> 42022)</h4> <pre class="diff"><span>
<span class="info">--- trunk/WebKit/mac/WebView/WebPreferences.mm	2009-03-26 23:50:00 \
                UTC (rev 42021)
+++ trunk/WebKit/mac/WebView/WebPreferences.mm	2009-03-27 00:01:58 UTC (rev 42022)
</span><span class="lines">@@ -306,6 +306,7 @@
</span><span class="cx">         @&quot;16&quot;,                          \
WebKitDefaultFontSizePreferenceKey, </span><span class="cx">         @&quot;13&quot;, \
WebKitDefaultFixedFontSizePreferenceKey, </span><span class="cx">         \
@&quot;ISO-8859-1&quot;,                  WebKitDefaultTextEncodingNamePreferenceKey, \
</span><ins>+        [NSNumber numberWithBool:NO],   \
WebKitUsesEncodingDetectorPreferenceKey, </ins><span class="cx">         [NSNumber \
numberWithBool:NO],   WebKitUserStyleSheetEnabledPreferenceKey, </span><span \
class="cx">         @&quot;&quot;,                            \
WebKitUserStyleSheetLocationPreferenceKey, </span><span class="cx">         [NSNumber \
numberWithBool:NO],   WebKitShouldPrintBackgroundsPreferenceKey, </span><span \
class="lines">@@ -864,6 +865,16 @@ </span><span class="cx">     \
_private-&gt;automaticallyDetectsCacheModel = automaticallyDetectsCacheModel; \
</span><span class="cx"> } </span><span class="cx"> 
</span><ins>+- (BOOL)usesEncodingDetector
+{
+    return [self _boolValueForKey: WebKitUsesEncodingDetectorPreferenceKey];
+}
+
+- (void)setUsesEncodingDetector:(BOOL)flag
+{
+    [self _setBoolValue: flag forKey: WebKitUsesEncodingDetectorPreferenceKey];
+}
+
</ins><span class="cx"> - (BOOL)isWebSecurityEnabled
</span><span class="cx"> {
</span><span class="cx">     return [self _boolValueForKey: \
WebKitWebSecurityEnabledPreferenceKey]; </span></span></pre></div>
<a id="trunkWebKitmacWebViewWebPreferencesPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/WebKit/mac/WebView/WebPreferencesPrivate.h \
(42021 => 42022)</h4> <pre class="diff"><span>
<span class="info">--- trunk/WebKit/mac/WebView/WebPreferencesPrivate.h	2009-03-26 \
                23:50:00 UTC (rev 42021)
+++ trunk/WebKit/mac/WebView/WebPreferencesPrivate.h	2009-03-27 00:01:58 UTC (rev \
42022) </span><span class="lines">@@ -59,6 +59,9 @@
</span><span class="cx"> - (BOOL)applicationChromeModeEnabled;
</span><span class="cx"> - (void)setApplicationChromeModeEnabled:(BOOL)flag;
</span><span class="cx"> 
</span><ins>+- (BOOL)usesEncodingDetector;
+- (void)setUsesEncodingDetector:(BOOL)flag;
+
</ins><span class="cx"> - (BOOL)respectStandardStyleKeyEquivalents;
</span><span class="cx"> - (void)setRespectStandardStyleKeyEquivalents:(BOOL)flag;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkWebKitmacWebViewWebViewmm"></a>
<div class="modfile"><h4>Modified: trunk/WebKit/mac/WebView/WebView.mm (42021 => \
42022)</h4> <pre class="diff"><span>
<span class="info">--- trunk/WebKit/mac/WebView/WebView.mm	2009-03-26 23:50:00 UTC \
                (rev 42021)
+++ trunk/WebKit/mac/WebView/WebView.mm	2009-03-27 00:01:58 UTC (rev 42022)
</span><span class="lines">@@ -1332,6 +1332,7 @@
</span><span class="cx">     settings-&gt;setDefaultFixedFontSize([preferences \
defaultFixedFontSize]); </span><span class="cx">     \
settings-&gt;setDefaultFontSize([preferences defaultFontSize]); </span><span \
class="cx">     settings-&gt;setDefaultTextEncodingName([preferences \
defaultTextEncodingName]); </span><ins>+    \
settings-&gt;setUsesEncodingDetector([preferences usesEncodingDetector]); </ins><span \
class="cx">     settings-&gt;setFantasyFontFamily([preferences fantasyFontFamily]); \
</span><span class="cx">     settings-&gt;setFixedFontFamily([preferences \
fixedFontFamily]); </span><span class="cx">     \
settings-&gt;setForceFTPDirectoryListings([preferences _forceFTPDirectoryListings]); \
</span></span></pre> </div>
</div>

</body>
</html>



_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic