webengine/osswebengine/WebKit/s60/misc/WebIconDatabase.cpp
changeset 0 dd21522fd290
child 38 6297cdf66332
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebKit/s60/misc/WebIconDatabase.cpp	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,99 @@
+/*
+* 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:  
+*
+*/
+
+#include "config.h"
+#include "WebIconDatabase.h"
+
+#include "IconDatabase.h"
+#include "MaskedBitmap.h"
+#include "Image.h"
+#include "PlatformString.h"
+#include "KURL.h"
+#include "IntRect.h"
+#include <GULICON.H>
+#include <FBS.H>
+#include "WebKitUtilsSqlite.h"
+
+using namespace WebCore;
+
+_LIT(KDBFile, "c:\\private\\%08x\\");
+
+WebIconDatabase::WebIconDatabase()
+{
+}
+
+WebIconDatabase::~WebIconDatabase()
+{
+    iconDatabase()->close();
+    sqlite3SymbianLibFinalize();
+}
+
+void WebIconDatabase::openSharedDatabase()
+{
+    if (!iconDatabase()->isOpen()) {
+        sqlite3SymbianLibInit();
+        // tot fixme: get process path from some utilities
+        iconDatabase()->setEnabled(true);
+	    RProcess myProcess;	
+	    TBuf <256>dirName;    
+        dirName.Format(KDBFile, myProcess.Identity());
+        String s(dirName.Ptr(), dirName.Length());
+        iconDatabase()->open(s);
+    }
+}
+
+CGulIcon* WebIconDatabase::iconForPageURL(const TDesC8& url)
+{
+    // make sure url has a trailing /
+    KURL _url(url);
+    iconDatabase()->retainIconForPageURL(String(_url));
+    Image* image = iconDatabase()->iconForPageURL(String(_url), IntSize(TSize(16, 16)));
+    if (image) {
+        CMaskedBitmap* maskedBitmap = image->getMaskedBitmap();
+        if (!maskedBitmap)
+            return NULL;
+        CGulIcon* icon = NULL;
+        CFbsBitmap* bitmap = new CFbsBitmap();
+        CFbsBitmap* mask = new CFbsBitmap();
+
+        if (bitmap && mask) {
+            int err( BitmapUtil::CopyBitmap(maskedBitmap->Bitmap(), *bitmap));
+            int errMask( BitmapUtil::CopyBitmap(maskedBitmap->Mask(), *mask));
+            if (err == KErrNone && errMask == KErrNone) {
+                TRAP_IGNORE(icon = CGulIcon::NewL());
+                if (icon) {
+                    icon->SetBitmap( bitmap );
+                    icon->SetMask( mask );
+                }
+            }
+        }
+        return icon;
+    }
+    return NULL;
+}
+
+void WebIconDatabase::retainIconForURL(const TDesC8& url)
+{   
+    iconDatabase()->retainIconForPageURL(String(url));
+}
+
+void WebIconDatabase::releaseIconForURL(const TDesC8& url)
+{   
+    iconDatabase()->releaseIconForPageURL(String(url));
+}
+
+