Bug 655255 - Remove nsICharsetDetectionAdaptor from the tree. r=smontagu.
authorHenri Sivonen <hsivonen@iki.fi>
Mon, 09 Jan 2012 14:19:51 +0200
changeset 84002 6e755023cdfa02a626d03b7c28af27f3678451c2
parent 84001 a3a0382b5de842eb4b793aba6c815db31a9c2021
child 84003 6f54fcb4f7005104e5634f63fdc9e8a5c75b3e2f
push id674
push userffxbld
push dateTue, 13 Mar 2012 21:17:50 +0000
treeherdermozilla-esr52@bbc7014db2de [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerssmontagu
bugs655255
milestone12.0a1
Bug 655255 - Remove nsICharsetDetectionAdaptor from the tree. r=smontagu.
content/html/document/src/nsHTMLDocument.cpp
content/html/document/src/nsHTMLDocument.h
intl/chardet/public/Makefile.in
intl/chardet/public/nsCharsetDetectionAdaptorCID.h
intl/chardet/public/nsICharsetDetectionAdaptor.h
intl/chardet/src/nsCharDetConstructors.h
intl/chardet/src/nsCharDetDll.h
--- a/content/html/document/src/nsHTMLDocument.cpp
+++ b/content/html/document/src/nsHTMLDocument.cpp
@@ -98,19 +98,16 @@
 #include "nsGenericHTMLElement.h"
 #include "mozilla/css/Loader.h"
 #include "nsIHttpChannel.h"
 #include "nsIFile.h"
 #include "nsEventListenerManager.h"
 #include "nsFrameSelection.h"
 #include "nsISelectionPrivate.h"//for toStringwithformat code
 
-#include "nsICharsetDetector.h"
-#include "nsICharsetDetectionAdaptor.h"
-#include "nsCharsetDetectionAdaptorCID.h"
 #include "nsICharsetAlias.h"
 #include "nsContentUtils.h"
 #include "nsJSUtils.h"
 #include "nsIDocumentCharsetInfo.h"
 #include "nsIDocumentEncoder.h" //for outputting selection
 #include "nsICachingChannel.h"
 #include "nsIJSContextStack.h"
 #include "nsIContentViewer.h"
@@ -142,21 +139,16 @@
 #include "mozilla/Preferences.h"
 #include "nsMimeTypes.h"
 
 using namespace mozilla;
 using namespace mozilla::dom;
 
 #define NS_MAX_DOCUMENT_WRITE_DEPTH 20
 
-#define DETECTOR_CONTRACTID_MAX 127
-static char g_detector_contractid[DETECTOR_CONTRACTID_MAX + 1];
-static bool gInitDetector = false;
-static bool gPlugDetector = false;
-
 #include "prmem.h"
 #include "prtime.h"
 
 // Find/Search Includes
 const PRInt32 kForward  = 0;
 const PRInt32 kBackward = 1;
 
 //#define DEBUG_charset
@@ -177,35 +169,16 @@ static bool ConvertToMidasInternalComman
                                             const nsAString & inParam,
                                             nsACString& outCommandID,
                                             nsACString& outParam,
                                             bool& isBoolean,
                                             bool& boolValue);
 
 static bool ConvertToMidasInternalCommand(const nsAString & inCommandID,
                                             nsACString& outCommandID);
-static int
-MyPrefChangedCallback(const char*aPrefName, void* instance_data)
-{
-  const nsAdoptingCString& detector_name =
-    Preferences::GetLocalizedCString("intl.charset.detector");
-
-  if (!detector_name.IsEmpty()) {
-    PL_strncpy(g_detector_contractid, NS_CHARSET_DETECTOR_CONTRACTID_BASE,
-               DETECTOR_CONTRACTID_MAX);
-    PL_strncat(g_detector_contractid, detector_name,
-               DETECTOR_CONTRACTID_MAX);
-    gPlugDetector = true;
-  } else {
-    g_detector_contractid[0]=0;
-    gPlugDetector = false;
-  }
-
-  return 0;
-}
 
 // ==================================================================
 // =
 // ==================================================================
 static void
 ReportUseOfDeprecatedMethod(nsHTMLDocument* aDoc, const char* aWarning)
 {
   nsContentUtils::ReportToConsole(nsIScriptError::warningFlag,
@@ -564,75 +537,16 @@ nsHTMLDocument::TryDefaultCharset( nsIMa
       aCharsetSource = kCharsetFromUserDefault;
       return true;
     }
   }
   return false;
 }
 
 void
-nsHTMLDocument::StartAutodetection(nsIDocShell *aDocShell, nsACString& aCharset,
-                                   const char* aCommand)
-{
-  if (mIsRegularHTML && 
-      nsHtml5Module::sEnabled && 
-      aCommand && 
-      (!nsCRT::strcmp(aCommand, "view") ||
-       !nsCRT::strcmp(aCommand, "view-source"))) {
-    return; // the HTML5 parser uses chardet directly
-  }
-  nsCOMPtr <nsIParserFilter> cdetflt;
-
-  nsresult rv_detect;
-  if(!gInitDetector) {
-    const nsAdoptingCString& detector_name =
-      Preferences::GetLocalizedCString("intl.charset.detector");
-
-    if(!detector_name.IsEmpty()) {
-      PL_strncpy(g_detector_contractid, NS_CHARSET_DETECTOR_CONTRACTID_BASE,
-                 DETECTOR_CONTRACTID_MAX);
-      PL_strncat(g_detector_contractid, detector_name,
-                 DETECTOR_CONTRACTID_MAX);
-      gPlugDetector = true;
-    }
-
-    Preferences::RegisterCallback(MyPrefChangedCallback,
-                                  "intl.charset.detector");
-
-    gInitDetector = true;
-  }
-
-  if (gPlugDetector) {
-    nsCOMPtr <nsICharsetDetector> cdet =
-      do_CreateInstance(g_detector_contractid, &rv_detect);
-    if (NS_SUCCEEDED(rv_detect)) {
-      cdetflt = do_CreateInstance(NS_CHARSET_DETECTION_ADAPTOR_CONTRACTID,
-                                  &rv_detect);
-
-      nsCOMPtr<nsICharsetDetectionAdaptor> adp = do_QueryInterface(cdetflt);
-      if (adp) {
-        nsCOMPtr<nsIWebShellServices> wss = do_QueryInterface(aDocShell);
-        if (wss) {
-          rv_detect = adp->Init(wss, cdet, this, mParser,
-                                PromiseFlatCString(aCharset).get(), aCommand);
-
-          if (mParser)
-            mParser->SetParserFilter(cdetflt);
-        }
-      }
-    }
-    else {
-      // IF we cannot create the detector, don't bother to
-      // create one next time.
-      gPlugDetector = false;
-    }
-  }
-}
-
-void
 nsHTMLDocument::SetDocumentCharacterSet(const nsACString& aCharSetID)
 {
   nsDocument::SetDocumentCharacterSet(aCharSetID);
   // Make sure to stash this charset on our channel as needed if it's a wyciwyg
   // channel.
   nsCOMPtr<nsIWyciwygChannel> wyciwygChannel = do_QueryInterface(mChannel);
   if (wyciwygChannel) {
     wyciwygChannel->SetCharsetAndSource(GetDocumentCharacterSetSource(),
@@ -907,23 +821,18 @@ nsHTMLDocument::StartDocumentLoad(const 
         rv = NS_OK;
       }
       
     } else {
       parserCharset = charset;
       parserCharsetSource = charsetSource;
     }
 
-    if(kCharsetFromAutoDetection > charsetSource && !isPostPage) {
-      StartAutodetection(docShell, charset, aCommand);
-    }
-
     // ahmed
     // Check if 864 but in Implicit mode !
-    // XXXbz why is this happening after StartAutodetection ?
     if ((textType == IBMBIDI_TEXTTYPE_LOGICAL) &&
         (charset.LowerCaseEqualsLiteral("ibm864"))) {
       charset.AssignLiteral("IBM864i");
     }
   }
 
   SetDocumentCharacterSetSource(charsetSource);
   SetDocumentCharacterSet(charset);
--- a/content/html/document/src/nsHTMLDocument.h
+++ b/content/html/document/src/nsHTMLDocument.h
@@ -267,19 +267,16 @@ protected:
                           nsIDocument* aParentDocument,
                           PRInt32& charsetSource, nsACString& aCharset);
   static bool UseWeakDocTypeDefault(PRInt32& aCharsetSource,
                                       nsACString& aCharset);
   static bool TryDefaultCharset(nsIMarkupDocumentViewer* aMarkupDV,
                                   PRInt32& aCharsetSource,
                                   nsACString& aCharset);
 
-  void StartAutodetection(nsIDocShell *aDocShell, nsACString& aCharset,
-                          const char* aCommand);
-
   // Override so we can munge the charset on our wyciwyg channel as needed.
   virtual void SetDocumentCharacterSet(const nsACString& aCharSetID);
 
   // mWriteState tracks the status of this document if the document is being
   // entirely created by script. In the normal load case, mWriteState will be
   // eNotWriting. Once document.open has been called (either implicitly or
   // explicitly), mWriteState will be eDocumentOpened. When document.close has
   // been called, mWriteState will become eDocumentClosed if there have been no
--- a/intl/chardet/public/Makefile.in
+++ b/intl/chardet/public/Makefile.in
@@ -45,20 +45,18 @@ include $(DEPTH)/config/autoconf.mk
 MODULE		= chardet
 
 XPIDLSRCS       = \
                 nsIDocumentCharsetInfo.idl \
                 nsIDocCharset.idl \
 		$(NULL)
 
 EXPORTS		= \
-		nsCharsetDetectionAdaptorCID.h \
 		nsDetectionConfident.h \
 		nsDocumentCharsetInfoCID.h \
-		nsICharsetDetectionAdaptor.h \
 		nsICharsetDetectionObserver.h \
 		nsICharsetDetector.h \
 		nsIStringCharsetDetector.h \
 		nsXMLEncodingCID.h \
 		$(NULL)
 
 include $(topsrcdir)/config/rules.mk
 
deleted file mode 100644
--- a/intl/chardet/public/nsCharsetDetectionAdaptorCID.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 1999
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either of the GNU General Public License Version 2 or later (the "GPL"),
- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-#ifndef nsCDETAdaptorCID_h__
-#define nsCDETAdaptorCID_h__
-
-#include "nscore.h"
-
-#define NS_CHARSET_DETECTION_ADAPTOR_CONTRACTID "@mozilla.org/intl/charsetdetectionadaptor;1"
-
-// {12BB8F17-2389-11d3-B3BF-00805F8A6670}
-#define NS_CHARSET_DETECTION_ADAPTOR_CID \
-{ 0x12bb8f17, 0x2389, 0x11d3, { 0xb3, 0xbf, 0x0, 0x80, 0x5f, 0x8a, 0x66, 0x70 } }
-
-
-#endif // nsCDETAdaptorCID_h__
deleted file mode 100644
--- a/intl/chardet/public/nsICharsetDetectionAdaptor.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 1999
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either of the GNU General Public License Version 2 or later (the "GPL"),
- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-#ifndef nsICDETAdaptor_h__
-#define nsICDETAdaptor_h__
-#include "nsISupports.h"
-
-class nsICharsetDetector;
-class nsIWebShellServices;
-class nsIDocument;
-class nsIParser;
-
-// {12BB8F13-2389-11d3-B3BF-00805F8A6670}
-#define NS_ICHARSETDETECTIONADAPTOR_IID \
-{ 0x12bb8f13, 0x2389, 0x11d3, { 0xb3, 0xbf, 0x0, 0x80, 0x5f, 0x8a, 0x66, 0x70 } }
-
-/*  
-   This interface is defined to be serverd as an Adaptor between
-   nsIWebShellServices, nsICharsetDetector and nsIParserFilter
-
-   It make the nsICharsetDetector implementation independent from the
-   nsIParserFilter and nsIWebShellServices
- */
-
-class nsICharsetDetectionAdaptor : public nsISupports {
-public:  
-  NS_DECLARE_STATIC_IID_ACCESSOR(NS_ICHARSETDETECTIONADAPTOR_IID)
-  /*   
-     Initialize it by setup the nsICharsetDetector and the 
-     nsIWebShellServices
-   */
-  NS_IMETHOD Init(nsIWebShellServices* aDocShell, nsICharsetDetector *aDetector, 
-                  nsIDocument* aDocument, nsIParser* aParser, 
-                  const char* aCharset, const char* aCommand=nsnull) = 0;
-};
-
-NS_DEFINE_STATIC_IID_ACCESSOR(nsICharsetDetectionAdaptor,
-                              NS_ICHARSETDETECTIONADAPTOR_IID)
-
-#endif /* nsICDETAdaptor_h__ */
--- a/intl/chardet/src/nsCharDetConstructors.h
+++ b/intl/chardet/src/nsCharDetConstructors.h
@@ -44,23 +44,21 @@
 #ifndef nsCharDetConstructors_h__
 #define nsCharDetConstructors_h__
 
 // chardet
 #include "nsISupports.h"
 #include "nsICharsetDetector.h"
 #include "nsICharsetAlias.h"
 #include "nsDocumentCharsetInfo.h"
-#include "nsICharsetDetectionAdaptor.h"
 #include "nsICharsetDetectionObserver.h"
 #include "nsIStringCharsetDetector.h"
 #include "nsCyrillicDetector.h"
 #include "nsDocumentCharsetInfoCID.h"
 #include "nsXMLEncodingCID.h"
-#include "nsCharsetDetectionAdaptorCID.h"
 
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDocumentCharsetInfo)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsRUProbDetector)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUKProbDetector)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsRUStringProbDetector)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUKStringProbDetector)
 
 #ifdef INCLUDE_DBGDETECTOR
--- a/intl/chardet/src/nsCharDetDll.h
+++ b/intl/chardet/src/nsCharDetDll.h
@@ -38,11 +38,10 @@
 #ifndef nsCharDetDll_h__
 #define nsCharDetDll_h__
 
 #include "prtypes.h"
 #include "nsIFactory.h"
 #include "nsICharsetDetector.h"
 #include "nsICharsetDetectionObserver.h"
 #include "nsIStringCharsetDetector.h"
-#include "nsICharsetDetectionAdaptor.h"
 
 #endif /* nsCharDetDll_h__ */