Title: [109697] trunk/Source/WebCore
Revision
109697
Author
[email protected]
Date
2012-03-04 19:23:58 -0800 (Sun, 04 Mar 2012)

Log Message

[BlackBerry] Credential backing store implementation
https://bugs.webkit.org/show_bug.cgi?id=79650

Patch by Jonathan Dong <[email protected]> on 2012-03-04
Reviewed by Antonio Gomes.

Opened Credential database in CedentialBackingStore::instance().
Added never_remember table and associated sql statment
members to store the never remember sites.
Removed CredentialStorage initialize codes because that
won't give users a chance to re-enter the new credential
information for an already stored site.
Changed login update and has statement to support
autofill feature of multiple credential forms in the
same page; Also added url as a parameter of hasLogin() function.
Added calling reset() after each statement calls step(),
to make it work correctly next time.
Also fixed a macro typo in HANDLE_SQL_EXEC_FAILURE.

No new tests.

* platform/network/blackberry/CredentialBackingStore.cpp:
(WebCore::CredentialBackingStore::instance):
(WebCore::CredentialBackingStore::CredentialBackingStore):
(WebCore::CredentialBackingStore::open):
(WebCore::CredentialBackingStore::close):
(WebCore::CredentialBackingStore::addLogin):
(WebCore::CredentialBackingStore::updateLogin):
(WebCore::CredentialBackingStore::hasLogin):
(WebCore::CredentialBackingStore::getLogin):
(WebCore):
(WebCore::CredentialBackingStore::removeLogin):
(WebCore::CredentialBackingStore::addNeverRemember):
(WebCore::CredentialBackingStore::hasNeverRemember):
(WebCore::CredentialBackingStore::getNeverRemember):
(WebCore::CredentialBackingStore::removeNeverRemember):
(WebCore::CredentialBackingStore::clearLogins):
(WebCore::CredentialBackingStore::clearNeverRemember):
* platform/network/blackberry/CredentialBackingStore.h:
(CredentialBackingStore):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (109696 => 109697)


--- trunk/Source/WebCore/ChangeLog	2012-03-05 03:15:18 UTC (rev 109696)
+++ trunk/Source/WebCore/ChangeLog	2012-03-05 03:23:58 UTC (rev 109697)
@@ -1,3 +1,45 @@
+2012-03-04  Jonathan Dong  <[email protected]>
+
+        [BlackBerry] Credential backing store implementation
+        https://bugs.webkit.org/show_bug.cgi?id=79650
+
+        Reviewed by Antonio Gomes.
+
+        Opened Credential database in CedentialBackingStore::instance().
+        Added never_remember table and associated sql statment
+        members to store the never remember sites.
+        Removed CredentialStorage initialize codes because that
+        won't give users a chance to re-enter the new credential
+        information for an already stored site.
+        Changed login update and has statement to support
+        autofill feature of multiple credential forms in the
+        same page; Also added url as a parameter of hasLogin() function.
+        Added calling reset() after each statement calls step(),
+        to make it work correctly next time.
+        Also fixed a macro typo in HANDLE_SQL_EXEC_FAILURE.
+
+        No new tests.
+
+        * platform/network/blackberry/CredentialBackingStore.cpp:
+        (WebCore::CredentialBackingStore::instance):
+        (WebCore::CredentialBackingStore::CredentialBackingStore):
+        (WebCore::CredentialBackingStore::open):
+        (WebCore::CredentialBackingStore::close):
+        (WebCore::CredentialBackingStore::addLogin):
+        (WebCore::CredentialBackingStore::updateLogin):
+        (WebCore::CredentialBackingStore::hasLogin):
+        (WebCore::CredentialBackingStore::getLogin):
+        (WebCore):
+        (WebCore::CredentialBackingStore::removeLogin):
+        (WebCore::CredentialBackingStore::addNeverRemember):
+        (WebCore::CredentialBackingStore::hasNeverRemember):
+        (WebCore::CredentialBackingStore::getNeverRemember):
+        (WebCore::CredentialBackingStore::removeNeverRemember):
+        (WebCore::CredentialBackingStore::clearLogins):
+        (WebCore::CredentialBackingStore::clearNeverRemember):
+        * platform/network/blackberry/CredentialBackingStore.h:
+        (CredentialBackingStore):
+
 2012-03-04  Hyowon Kim  <[email protected]>
 
         [EFL] Evas_GL initialization and destruction in GraphicsContext3DPrivate

Modified: trunk/Source/WebCore/platform/network/blackberry/CredentialBackingStore.cpp (109696 => 109697)


--- trunk/Source/WebCore/platform/network/blackberry/CredentialBackingStore.cpp	2012-03-05 03:15:18 UTC (rev 109696)
+++ trunk/Source/WebCore/platform/network/blackberry/CredentialBackingStore.cpp	2012-03-05 03:23:58 UTC (rev 109697)
@@ -22,15 +22,16 @@
 #include "CredentialBackingStore.h"
 
 #include "CredentialStorage.h"
+#include "FileSystem.h"
 #include "KURL.h"
 #include "NotImplemented.h"
 #include "ProtectionSpaceHash.h"
 #include "SQLiteStatement.h"
-#include <wtf/UnusedParam.h>
+#include <BlackBerryPlatformClient.h>
 
 #define HANDLE_SQL_EXEC_FAILURE(statement, returnValue, ...) \
     if (statement) { \
-        LOG_ERROR(__VAR_ARGS__); \
+        LOG_ERROR(__VA_ARGS__); \
         return returnValue; \
     }
 
@@ -39,17 +40,24 @@
 CredentialBackingStore* CredentialBackingStore::instance()
 {
     static CredentialBackingStore* backingStore = 0;
-    if (!backingStore)
+    if (!backingStore) {
         backingStore = new CredentialBackingStore;
+        backingStore->open(pathByAppendingComponent(BlackBerry::Platform::Client::get()->getApplicationDataDirectory().c_str(), "/credentials.db"));
+    }
     return backingStore;
 }
 
 CredentialBackingStore::CredentialBackingStore()
-    : m_addStatement(0)
-    , m_updateStatement(0)
-    , m_hasStatement(0)
-    , m_getStatement(0)
-    , m_removeStatement(0)
+    : m_addLoginStatement(0)
+    , m_updateLoginStatement(0)
+    , m_hasLoginStatement(0)
+    , m_getLoginStatement(0)
+    , m_getLoginByURLStatement(0)
+    , m_removeLoginStatement(0)
+    , m_addNeverRememberStatement(0)
+    , m_hasNeverRememberStatement(0)
+    , m_getNeverRememberStatement(0)
+    , m_removeNeverRememberStatement(0)
 {
 }
 
@@ -71,69 +79,85 @@
             false, "Failed to create table logins for login database");
 
         // Create index for table logins.
-        HANDLE_SQL_EXEC_FAILURE(!m_database.executeCommand("CREATE INDEX logins_signon ON logins (host)"),
+        HANDLE_SQL_EXEC_FAILURE(!m_database.executeCommand("CREATE INDEX logins_index ON logins (host)"),
             false, "Failed to create index for table logins");
-    } else { // Initiate CredentialStorage.
-        SQLiteStatement query(m_database, "SELECT origin_url, host, port, service_type, realm, auth_scheme, username, password FROM logins");
-        HANDLE_SQL_EXEC_FAILURE(query.prepare() != SQLResultOk,
-            false, "Failed to prepare query statement to initiate CredentialStorage");
+    }
 
-        int result = query.step();
-        while (result == SQLResultRow) {
-            String strUrl = query.getColumnText(1);
-            String strHost = query.getColumnText(2);
-            int intPort = query.getColumnInt(3);
-            ProtectionSpaceServerType serviceType = static_cast<ProtectionSpaceServerType>(query.getColumnInt(4));
-            String strRealm = query.getColumnText(5);
-            ProtectionSpaceAuthenticationScheme authScheme = static_cast<ProtectionSpaceAuthenticationScheme>(query.getColumnInt(6));
-            String strUserName = query.getColumnText(7);
-            String strPassword = decryptedString(query.getColumnText(8));
+    if (!m_database.tableExists("never_remember")) {
+        HANDLE_SQL_EXEC_FAILURE(!m_database.executeCommand("CREATE TABLE never_remember (origin_url VARCHAR NOT NULL, host VARCHAR NOT NULL, port INTEGER, service_type INTEGER NOT NULL, realm VARCHAR, auth_scheme INTEGER NOT NULL) "),
+            false, "Failed to create table never_remember for login database");
 
-            KURL url(ParsedURLString, strUrl);
-            ProtectionSpace protectionSpace(strHost, intPort, serviceType, strRealm, authScheme);
-            Credential credential(strUserName, strPassword, CredentialPersistencePermanent);
-            CredentialStorage::set(credential, protectionSpace, url);
-
-            result = query.step();
-        }
+        // Create index for table never_remember.
+        HANDLE_SQL_EXEC_FAILURE(!m_database.executeCommand("CREATE INDEX never_remember_index ON never_remember (host)"),
+            false, "Failed to create index for table never_remember");
     }
 
     // Prepare the statements.
-    m_addStatement = new SQLiteStatement(m_database, "INSERT OR REPLACE INTO logins (origin_url, host, port, service_type, realm, auth_scheme, username, password) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
-    HANDLE_SQL_EXEC_FAILURE(m_addStatement->prepare() != SQLResultOk,
+    m_addLoginStatement = new SQLiteStatement(m_database, "INSERT OR REPLACE INTO logins (origin_url, host, port, service_type, realm, auth_scheme, username, password) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
+    HANDLE_SQL_EXEC_FAILURE(m_addLoginStatement->prepare() != SQLResultOk,
         false, "Failed to prepare addLogin statement");
 
-    m_updateStatement = new SQLiteStatement(m_database, "UPDATE logins SET username = ?, password = ? WHERE origin_url = ? AND host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?");
-    HANDLE_SQL_EXEC_FAILURE(m_updateStatement->prepare() != SQLResultOk,
+    m_updateLoginStatement = new SQLiteStatement(m_database, "UPDATE logins SET username = ?, password = ? WHERE origin_url = ? AND host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?");
+    HANDLE_SQL_EXEC_FAILURE(m_updateLoginStatement->prepare() != SQLResultOk,
         false, "Failed to prepare updateLogin statement");
 
-    m_hasStatement = new SQLiteStatement(m_database, "SELECT COUNT(*) FROM logins WHERE host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?");
-    HANDLE_SQL_EXEC_FAILURE(m_hasStatement->prepare() != SQLResultOk,
+    m_hasLoginStatement = new SQLiteStatement(m_database, "SELECT COUNT(*) FROM logins WHERE origin_url = ? AND host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?");
+    HANDLE_SQL_EXEC_FAILURE(m_hasLoginStatement->prepare() != SQLResultOk,
         false, "Failed to prepare hasLogin statement");
 
-    m_getStatement = new SQLiteStatement(m_database, "SELECT username, password FROM logins WHERE host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?");
-    HANDLE_SQL_EXEC_FAILURE(m_getStatement->prepare() != SQLResultOk,
+    m_getLoginStatement = new SQLiteStatement(m_database, "SELECT username, password FROM logins WHERE host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?");
+    HANDLE_SQL_EXEC_FAILURE(m_getLoginStatement->prepare() != SQLResultOk,
         false, "Failed to prepare getLogin statement");
 
-    m_removeStatement = new SQLiteStatement(m_database, "DELETE FROM logins WHERE host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?");
-    HANDLE_SQL_EXEC_FAILURE(m_removeStatement->prepare() != SQLResultOk,
+    m_getLoginByURLStatement = new SQLiteStatement(m_database, "SELECT username, password FROM logins WHERE origin_url = ?");
+    HANDLE_SQL_EXEC_FAILURE(m_getLoginByURLStatement->prepare() != SQLResultOk,
+        false, "Failed to prepare getLoginByURL statement");
+
+    m_removeLoginStatement = new SQLiteStatement(m_database, "DELETE FROM logins WHERE origin_url = ? AND host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?");
+    HANDLE_SQL_EXEC_FAILURE(m_removeLoginStatement->prepare() != SQLResultOk,
         false, "Failed to prepare removeLogin statement");
 
+    m_addNeverRememberStatement = new SQLiteStatement(m_database, "INSERT OR REPLACE INTO never_remember (origin_url, host, port, service_type, realm, auth_scheme) VALUES (?, ?, ?, ?, ?, ?)");
+    HANDLE_SQL_EXEC_FAILURE(m_addNeverRememberStatement->prepare() != SQLResultOk,
+        false, "Failed to prepare addNeverRemember statement");
+
+    m_hasNeverRememberStatement = new SQLiteStatement(m_database, "SELECT COUNT(*) FROM never_remember WHERE host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?");
+    HANDLE_SQL_EXEC_FAILURE(m_hasNeverRememberStatement->prepare() != SQLResultOk,
+        false, "Failed to prepare hasNeverRemember statement");
+
+    m_getNeverRememberStatement = new SQLiteStatement(m_database, "SELECT origin_url FROM never_remember WHERE host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?");
+    HANDLE_SQL_EXEC_FAILURE(m_getNeverRememberStatement->prepare() != SQLResultOk,
+        false, "Failed to prepare getNeverRemember statement");
+
+    m_removeNeverRememberStatement = new SQLiteStatement(m_database, "DELETE FROM never_remember WHERE host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?");
+    HANDLE_SQL_EXEC_FAILURE(m_removeNeverRememberStatement->prepare() != SQLResultOk,
+        false, "Failed to prepare removeNeverRemember statement");
+
     return true;
 }
 
 void CredentialBackingStore::close()
 {
-    delete m_addStatement;
-    m_addStatement = 0;
-    delete m_updateStatement;
-    m_updateStatement = 0;
-    delete m_hasStatement;
-    m_hasStatement = 0;
-    delete m_getStatement;
-    m_getStatement = 0;
-    delete m_removeStatement;
-    m_removeStatement = 0;
+    delete m_addLoginStatement;
+    m_addLoginStatement = 0;
+    delete m_updateLoginStatement;
+    m_updateLoginStatement = 0;
+    delete m_hasLoginStatement;
+    m_hasLoginStatement = 0;
+    delete m_getLoginStatement;
+    m_getLoginStatement = 0;
+    delete m_getLoginByURLStatement;
+    m_getLoginByURLStatement = 0;
+    delete m_removeLoginStatement;
+    m_removeLoginStatement = 0;
+    delete m_addNeverRememberStatement;
+    m_addNeverRememberStatement = 0;
+    delete m_hasNeverRememberStatement;
+    m_hasNeverRememberStatement = 0;
+    delete m_getNeverRememberStatement;
+    m_getNeverRememberStatement = 0;
+    delete m_removeNeverRememberStatement;
+    m_removeNeverRememberStatement = 0;
 
     if (m_database.isOpen())
         m_database.close();
@@ -144,19 +168,20 @@
     ASSERT(m_database.isOpen());
     ASSERT(m_database.tableExists("logins"));
 
-    if (!m_addStatement)
+    if (!m_addLoginStatement)
         return false;
 
-    m_addStatement->bindText(1, url.string());
-    m_addStatement->bindText(2, protectionSpace.host());
-    m_addStatement->bindInt(3, protectionSpace.port());
-    m_addStatement->bindInt(4, static_cast<int>(protectionSpace.serverType()));
-    m_addStatement->bindText(5, protectionSpace.realm());
-    m_addStatement->bindInt(6, static_cast<int>(protectionSpace.authenticationScheme()));
-    m_addStatement->bindText(7, credential.user());
-    m_addStatement->bindBlob(8, encryptedString(credential.password()));
+    m_addLoginStatement->bindText(1, url.string());
+    m_addLoginStatement->bindText(2, protectionSpace.host());
+    m_addLoginStatement->bindInt(3, protectionSpace.port());
+    m_addLoginStatement->bindInt(4, static_cast<int>(protectionSpace.serverType()));
+    m_addLoginStatement->bindText(5, protectionSpace.realm());
+    m_addLoginStatement->bindInt(6, static_cast<int>(protectionSpace.authenticationScheme()));
+    m_addLoginStatement->bindText(7, credential.user());
+    m_addLoginStatement->bindBlob(8, encryptedString(credential.password()));
 
-    int result = m_addStatement->step();
+    int result = m_addLoginStatement->step();
+    m_addLoginStatement->reset();
     HANDLE_SQL_EXEC_FAILURE(result != SQLResultDone, false,
         "Failed to add login info into table logins - %i", result);
 
@@ -168,44 +193,48 @@
     ASSERT(m_database.isOpen());
     ASSERT(m_database.tableExists("logins"));
 
-    if (!m_updateStatement)
+    if (!m_updateLoginStatement)
         return false;
 
-    m_updateStatement->bindText(1, url.string());
-    m_updateStatement->bindText(2, credential.user());
-    m_updateStatement->bindBlob(3, encryptedString(credential.password()));
-    m_updateStatement->bindText(4, protectionSpace.host());
-    m_updateStatement->bindInt(5, protectionSpace.port());
-    m_updateStatement->bindInt(6, static_cast<int>(protectionSpace.serverType()));
-    m_updateStatement->bindText(7, protectionSpace.realm());
-    m_updateStatement->bindInt(8, static_cast<int>(protectionSpace.authenticationScheme()));
+    m_updateLoginStatement->bindText(1, credential.user());
+    m_updateLoginStatement->bindBlob(2, encryptedString(credential.password()));
+    m_updateLoginStatement->bindText(3, url.string());
+    m_updateLoginStatement->bindText(4, protectionSpace.host());
+    m_updateLoginStatement->bindInt(5, protectionSpace.port());
+    m_updateLoginStatement->bindInt(6, static_cast<int>(protectionSpace.serverType()));
+    m_updateLoginStatement->bindText(7, protectionSpace.realm());
+    m_updateLoginStatement->bindInt(8, static_cast<int>(protectionSpace.authenticationScheme()));
 
-    int result = m_updateStatement->step();
+    int result = m_updateLoginStatement->step();
+    m_updateLoginStatement->reset();
     HANDLE_SQL_EXEC_FAILURE(result != SQLResultDone, false,
         "Failed to update login info in table logins - %i", result);
 
     return true;
 }
 
-bool CredentialBackingStore::hasLogin(const ProtectionSpace& protectionSpace)
+bool CredentialBackingStore::hasLogin(const KURL& url, const ProtectionSpace& protectionSpace)
 {
     ASSERT(m_database.isOpen());
     ASSERT(m_database.tableExists("logins"));
 
-    if (!m_hasStatement)
+    if (!m_hasLoginStatement)
         return false;
 
-    m_hasStatement->bindText(1, protectionSpace.host());
-    m_hasStatement->bindInt(2, protectionSpace.port());
-    m_hasStatement->bindInt(3, static_cast<int>(protectionSpace.serverType()));
-    m_hasStatement->bindText(4, protectionSpace.realm());
-    m_hasStatement->bindInt(5, static_cast<int>(protectionSpace.authenticationScheme()));
+    m_hasLoginStatement->bindText(1, url.string());
+    m_hasLoginStatement->bindText(2, protectionSpace.host());
+    m_hasLoginStatement->bindInt(3, protectionSpace.port());
+    m_hasLoginStatement->bindInt(4, static_cast<int>(protectionSpace.serverType()));
+    m_hasLoginStatement->bindText(5, protectionSpace.realm());
+    m_hasLoginStatement->bindInt(6, static_cast<int>(protectionSpace.authenticationScheme()));
 
-    int result = m_hasStatement->step();
+    int result = m_hasLoginStatement->step();
+    int numOfRow = m_hasLoginStatement->getColumnInt(0);
+    m_hasLoginStatement->reset();
     HANDLE_SQL_EXEC_FAILURE(result != SQLResultRow, false,
         "Failed to execute select login info from table logins in hasLogin - %i", result);
 
-    if (m_hasStatement->getColumnInt(0))
+    if (numOfRow)
         return true;
     return false;
 }
@@ -215,46 +244,164 @@
     ASSERT(m_database.isOpen());
     ASSERT(m_database.tableExists("logins"));
 
-    if (!m_getStatement)
+    if (!m_getLoginStatement)
         return Credential();
 
-    m_getStatement->bindText(1, protectionSpace.host());
-    m_getStatement->bindInt(2, protectionSpace.port());
-    m_getStatement->bindInt(3, static_cast<int>(protectionSpace.serverType()));
-    m_getStatement->bindText(4, protectionSpace.realm());
-    m_getStatement->bindInt(5, static_cast<int>(protectionSpace.authenticationScheme()));
+    m_getLoginStatement->bindText(1, protectionSpace.host());
+    m_getLoginStatement->bindInt(2, protectionSpace.port());
+    m_getLoginStatement->bindInt(3, static_cast<int>(protectionSpace.serverType()));
+    m_getLoginStatement->bindText(4, protectionSpace.realm());
+    m_getLoginStatement->bindInt(5, static_cast<int>(protectionSpace.authenticationScheme()));
 
-    int result = m_getStatement->step();
+    int result = m_getLoginStatement->step();
+    String username = m_getLoginStatement->getColumnText(0);
+    String password = m_getLoginStatement->getColumnBlobAsString(1);
+    m_getLoginStatement->reset();
     HANDLE_SQL_EXEC_FAILURE(result != SQLResultRow, Credential(),
         "Failed to execute select login info from table logins in getLogin - %i", result);
 
-    return Credential(m_getStatement->getColumnText(0), decryptedString(m_getStatement->getColumnText(1)), CredentialPersistencePermanent);
+    return Credential(username, decryptedString(password), CredentialPersistencePermanent);
 }
 
-bool CredentialBackingStore::removeLogin(const ProtectionSpace& protectionSpace)
+Credential CredentialBackingStore::getLogin(const KURL& url)
 {
     ASSERT(m_database.isOpen());
     ASSERT(m_database.tableExists("logins"));
 
-    if (!m_removeStatement)
+    if (!m_getLoginByURLStatement)
+        return Credential();
+
+    m_getLoginByURLStatement->bindText(1, url.string());
+
+    int result = m_getLoginByURLStatement->step();
+    String username = m_getLoginByURLStatement->getColumnText(0);
+    String password = m_getLoginByURLStatement->getColumnBlobAsString(1);
+    m_getLoginByURLStatement->reset();
+    HANDLE_SQL_EXEC_FAILURE(result != SQLResultRow, Credential(),
+        "Failed to execute select login info from table logins in getLogin - %i", result);
+
+    return Credential(username, decryptedString(password), CredentialPersistencePermanent);
+}
+
+bool CredentialBackingStore::removeLogin(const KURL& url, const ProtectionSpace& protectionSpace)
+{
+    ASSERT(m_database.isOpen());
+    ASSERT(m_database.tableExists("logins"));
+
+    if (!m_removeLoginStatement)
         return false;
 
-    m_removeStatement->bindText(1, protectionSpace.host());
-    m_removeStatement->bindInt(2, protectionSpace.port());
-    m_removeStatement->bindInt(3, static_cast<int>(protectionSpace.serverType()));
-    m_removeStatement->bindText(4, protectionSpace.realm());
-    m_removeStatement->bindInt(5, static_cast<int>(protectionSpace.authenticationScheme()));
+    m_removeLoginStatement->bindText(1, url.string());
+    m_removeLoginStatement->bindText(2, protectionSpace.host());
+    m_removeLoginStatement->bindInt(3, protectionSpace.port());
+    m_removeLoginStatement->bindInt(4, static_cast<int>(protectionSpace.serverType()));
+    m_removeLoginStatement->bindText(5, protectionSpace.realm());
+    m_removeLoginStatement->bindInt(6, static_cast<int>(protectionSpace.authenticationScheme()));
 
-    int result = m_removeStatement->step();
+    int result = m_removeLoginStatement->step();
+    m_removeLoginStatement->reset();
     HANDLE_SQL_EXEC_FAILURE(result != SQLResultDone, false,
         "Failed to remove login info from table logins - %i", result);
 
     return true;
 }
 
-bool CredentialBackingStore::clear()
+bool CredentialBackingStore::addNeverRemember(const KURL& url, const ProtectionSpace& protectionSpace)
 {
     ASSERT(m_database.isOpen());
+    ASSERT(m_database.tableExists("never_remember"));
+
+    if (!m_addNeverRememberStatement)
+        return false;
+
+    m_addNeverRememberStatement->bindText(1, url.string());
+    m_addNeverRememberStatement->bindText(2, protectionSpace.host());
+    m_addNeverRememberStatement->bindInt(3, protectionSpace.port());
+    m_addNeverRememberStatement->bindInt(4, static_cast<int>(protectionSpace.serverType()));
+    m_addNeverRememberStatement->bindText(5, protectionSpace.realm());
+    m_addNeverRememberStatement->bindInt(6, static_cast<int>(protectionSpace.authenticationScheme()));
+
+    int result = m_addNeverRememberStatement->step();
+    m_addNeverRememberStatement->reset();
+    HANDLE_SQL_EXEC_FAILURE(result != SQLResultDone, false,
+        "Failed to add naver saved item info into table never_remember - %i", result);
+
+    return true;
+}
+
+bool CredentialBackingStore::hasNeverRemember(const ProtectionSpace& protectionSpace)
+{
+    ASSERT(m_database.isOpen());
+    ASSERT(m_database.tableExists("never_remember"));
+
+    if (!m_hasNeverRememberStatement)
+        return false;
+
+    m_hasNeverRememberStatement->bindText(1, protectionSpace.host());
+    m_hasNeverRememberStatement->bindInt(2, protectionSpace.port());
+    m_hasNeverRememberStatement->bindInt(3, static_cast<int>(protectionSpace.serverType()));
+    m_hasNeverRememberStatement->bindText(4, protectionSpace.realm());
+    m_hasNeverRememberStatement->bindInt(5, static_cast<int>(protectionSpace.authenticationScheme()));
+
+    int result = m_hasNeverRememberStatement->step();
+    int numOfRow = m_hasNeverRememberStatement->getColumnInt(0);
+    m_hasNeverRememberStatement->reset();
+    HANDLE_SQL_EXEC_FAILURE(result != SQLResultRow, false,
+        "Failed to execute select to find naver saved site from table never_remember - %i", result);
+
+    if (numOfRow)
+        return true;
+    return false;
+}
+
+KURL CredentialBackingStore::getNeverRemember(const ProtectionSpace& protectionSpace)
+{
+    ASSERT(m_database.isOpen());
+    ASSERT(m_database.tableExists("never_remember"));
+
+    if (!m_getNeverRememberStatement)
+        return KURL();
+
+    m_getNeverRememberStatement->bindText(1, protectionSpace.host());
+    m_getNeverRememberStatement->bindInt(2, protectionSpace.port());
+    m_getNeverRememberStatement->bindInt(3, static_cast<int>(protectionSpace.serverType()));
+    m_getNeverRememberStatement->bindText(4, protectionSpace.realm());
+    m_getNeverRememberStatement->bindInt(5, static_cast<int>(protectionSpace.authenticationScheme()));
+
+    int result = m_getNeverRememberStatement->step();
+    String url = ""
+    m_getNeverRememberStatement->reset();
+    HANDLE_SQL_EXEC_FAILURE(result != SQLResultRow, KURL(),
+        "Failed to execute select never saved site info from table never_remember in getNeverRemember - %i", result);
+
+    return KURL(ParsedURLString, url);
+}
+
+bool CredentialBackingStore::removeNeverRemember(const ProtectionSpace& protectionSpace)
+{
+    ASSERT(m_database.isOpen());
+    ASSERT(m_database.tableExists("never_remember"));
+
+    if (!m_removeNeverRememberStatement)
+        return false;
+
+    m_removeNeverRememberStatement->bindText(1, protectionSpace.host());
+    m_removeNeverRememberStatement->bindInt(2, protectionSpace.port());
+    m_removeNeverRememberStatement->bindInt(3, static_cast<int>(protectionSpace.serverType()));
+    m_removeNeverRememberStatement->bindText(4, protectionSpace.realm());
+    m_removeNeverRememberStatement->bindInt(5, static_cast<int>(protectionSpace.authenticationScheme()));
+
+    int result = m_removeNeverRememberStatement->step();
+    m_removeNeverRememberStatement->reset();
+    HANDLE_SQL_EXEC_FAILURE(result != SQLResultDone, false,
+        "Failed to remove never saved site from table never_remember - %i", result);
+
+    return true;
+}
+
+bool CredentialBackingStore::clearLogins()
+{
+    ASSERT(m_database.isOpen());
     ASSERT(m_database.tableExists("logins"));
 
     HANDLE_SQL_EXEC_FAILURE(!m_database.executeCommand("DELETE * FROM logins"),
@@ -263,6 +410,17 @@
     return true;
 }
 
+bool CredentialBackingStore::clearNeverRemember()
+{
+    ASSERT(m_database.isOpen());
+    ASSERT(m_database.tableExists("never_remember"));
+
+    HANDLE_SQL_EXEC_FAILURE(!m_database.executeCommand("DELETE * FROM never_remember"),
+        false, "Failed to clear table never_remember");
+
+    return true;
+}
+
 String CredentialBackingStore::encryptedString(const String& plainText) const
 {
     // FIXME: Need encrypt plainText here

Modified: trunk/Source/WebCore/platform/network/blackberry/CredentialBackingStore.h (109696 => 109697)


--- trunk/Source/WebCore/platform/network/blackberry/CredentialBackingStore.h	2012-03-05 03:15:18 UTC (rev 109696)
+++ trunk/Source/WebCore/platform/network/blackberry/CredentialBackingStore.h	2012-03-05 03:23:58 UTC (rev 109697)
@@ -37,10 +37,16 @@
     void close();
     bool addLogin(const KURL&, const ProtectionSpace&, const Credential&);
     bool updateLogin(const KURL&, const ProtectionSpace&, const Credential&);
-    bool hasLogin(const ProtectionSpace&);
+    bool hasLogin(const KURL&, const ProtectionSpace&);
     Credential getLogin(const ProtectionSpace&);
-    bool removeLogin(const ProtectionSpace&);
-    bool clear();
+    Credential getLogin(const KURL&);
+    bool removeLogin(const KURL&, const ProtectionSpace&);
+    bool addNeverRemember(const KURL&, const ProtectionSpace&);
+    bool hasNeverRemember(const ProtectionSpace&);
+    KURL getNeverRemember(const ProtectionSpace&);
+    bool removeNeverRemember(const ProtectionSpace&);
+    bool clearLogins();
+    bool clearNeverRemember();
 
 private:
     CredentialBackingStore();
@@ -48,11 +54,16 @@
     String decryptedString(const String& cipherText) const;
 
     SQLiteDatabase m_database;
-    SQLiteStatement* m_addStatement;
-    SQLiteStatement* m_updateStatement;
-    SQLiteStatement* m_hasStatement;
-    SQLiteStatement* m_getStatement;
-    SQLiteStatement* m_removeStatement;
+    SQLiteStatement* m_addLoginStatement;
+    SQLiteStatement* m_updateLoginStatement;
+    SQLiteStatement* m_hasLoginStatement;
+    SQLiteStatement* m_getLoginStatement;
+    SQLiteStatement* m_getLoginByURLStatement;
+    SQLiteStatement* m_removeLoginStatement;
+    SQLiteStatement* m_addNeverRememberStatement;
+    SQLiteStatement* m_hasNeverRememberStatement;
+    SQLiteStatement* m_getNeverRememberStatement;
+    SQLiteStatement* m_removeNeverRememberStatement;
 };
 
 } // namespace WebCore
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to