/*
* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:  Recognizer for the bowser supported MIME types  
*
*/

#ifndef BROWSEREC_H
#define BROWSEREC_H

// includes
#include <apmrec.h>  // For CApaDataRecognizerType
#include <Browser_Platform_Variant.hrh>

// constants
const TUid KUidMimeBrowserRecognizer = { 0x1005A02 };

const TInt KBrowserRecognizerImplUIDValue = 0x101F880E;
const TUid KUidBrowserRecognizerImpl = { KBrowserRecognizerImplUIDValue };

#ifndef BRDO_WML_DISABLED_FF
const TInt KSupportedMimetypes(13);
#else 
const TInt KSupportedMimetypes(9);
#endif 

// Exported mimetypes
#ifndef BRDO_WML_DISABLED_FF
_LIT8( KWMLCMimeType,        "application/vnd.wap.wmlc"       );
_LIT8( KWMLMimeType,         "text/vnd.wap.wml"               );
_LIT8( KWMLSCMimeType,       "application/vnd.wap.wmlscriptc" );
_LIT8( KWBXMLMimeType,       "application/vnd.wap.wbxml1"     );
#endif 
_LIT8( KHTMLMimeType,        "text/html"                      );
_LIT8( KXHTMLMimeType1,      "application/vnd.wap.xhtml+xml"   );
_LIT8( KXHTMLMimeType2,      "application/xhtml+xml"          );
_LIT8( KCssMimeType,         "text/css"                       );
_LIT8( KJavaSCMimeType,      "application/x-javascript"       );
_LIT8( KJavaEcmaMimeType,    "text/ecmascript"                );
_LIT8( KMultiMixedMimeType,  "multipart/mixed"                );
_LIT8( KOPMLMimeType,        "text/x-opml"                    );

// File extensions
#ifndef BRDO_WML_DISABLED_FF
_LIT( KDotWMLC,             ".wmlc"      );
_LIT( KDotWMLSC,            ".wmlsc"     );
_LIT( KDotWBXML,            ".wbxml"     );
#endif 
_LIT( KDotHTML,             ".html"      );
_LIT( KDotHTM,              ".htm"       );
_LIT( KDotXHTML,            ".xhtml"     );
_LIT( KDotXHTML2,           ".xht"       );
_LIT( KDotCss,              ".css"       );
_LIT( KDotJavaScript,       ".js"        );
_LIT( KDotEcmaScript,       ".es"        );
_LIT( KDotOPML,             ".opml"      );

//
// CBrowserRecognizer
//
class CBrowserRecognizer : public CApaDataRecognizerType
  {
  public: // from CApaDataRecognizerType
    CBrowserRecognizer();

    static CApaDataRecognizerType* CreateRecognizerL();

    virtual TUint PreferredBufSize();
    virtual TDataType SupportedDataTypeL(TInt aIndex) const;

  private: // from CApaDataRecognizerType
    virtual void DoRecognizeL(const TDesC& aName, const TDesC8& aBuffer);

    // New funtions
  private:

    TBool CheckForWMLC( const TDesC8& aBuffer );
    TBool CheckWbxmlVersion( TUint8 byte );
    TBool CheckWbxmlPubId( TUint8 byte );
    TBool CheckForHtml( const TDesC8& aBuffer );
    TBool CheckForXhtml( const TDesC8& aBuffer );
    TBool CheckForWML( const TDesC8& aBuffer );
    TBool CheckForOPML( const TDesC8& aBuffer );
  };

#endif // BROWSEREC_H

// END FILE
