Changeset 116258 in webkit
- Timestamp:
- May 6, 2012 6:50:45 PM (12 years ago)
- Location:
- trunk/Source
- Files:
-
- 2 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r116255 r116258 1 2012-05-06 Jonathan Dong <jonathan.dong@torchmobile.com.cn> 2 3 [BlackBerry] Autofill backing store implementation upstream 4 https://bugs.webkit.org/show_bug.cgi?id=85575 5 6 Reviewed by Rob Buis. 7 8 Implemented class AutofillBackingStore which is responsible 9 for handling interaction with autofill database. 10 11 Replaced static function 12 CredentialBackingStore* CredentialBackingStore::instance() 13 with a helper function 14 CredentialBackingStore& credentialBackingStore(), 15 and used DEFINE_STATIC_LOCAL to construct the singleton 16 object. 17 Also removed unnecessary function close() and combined with 18 the destructor of class CredentialBackingStore. 19 20 Initial upstream, No new tests. 21 22 * PlatformBlackBerry.cmake: 23 * platform/network/blackberry/AutofillBackingStore.cpp: Added. 24 (WebCore): 25 (WebCore::autofillBackingStore): 26 (WebCore::AutofillBackingStore::AutofillBackingStore): 27 (WebCore::AutofillBackingStore::~AutofillBackingStore): 28 (WebCore::AutofillBackingStore::open): 29 (WebCore::AutofillBackingStore::add): 30 (WebCore::AutofillBackingStore::update): 31 (WebCore::AutofillBackingStore::contains): 32 (WebCore::AutofillBackingStore::get): 33 (WebCore::AutofillBackingStore::clear): 34 * platform/network/blackberry/AutofillBackingStore.h: Added. 35 (WebCore): 36 (AutofillBackingStore): 37 * platform/network/blackberry/CredentialBackingStore.cpp: 38 (WebCore::credentialBackingStore): 39 (WebCore::CredentialBackingStore::~CredentialBackingStore): 40 * platform/network/blackberry/CredentialBackingStore.h: 41 (CredentialBackingStore): 42 (WebCore): 43 * platform/network/blackberry/CredentialStorageBlackBerry.cpp: 44 (WebCore::CredentialStorage::getFromPersistentStorage): 45 1 46 2012-05-06 MORITA Hajime <morrita@google.com> 2 47 -
trunk/Source/WebCore/PlatformBlackBerry.cmake
r115347 r116258 91 91 platform/network/MIMESniffing.cpp 92 92 platform/network/ProxyServer.cpp 93 platform/network/blackberry/AutofillBackingStore.cpp 93 94 platform/network/blackberry/DeferredData.cpp 94 95 platform/network/blackberry/NetworkJob.cpp -
trunk/Source/WebCore/platform/network/blackberry/CredentialBackingStore.cpp
r112104 r116258 39 39 namespace WebCore { 40 40 41 CredentialBackingStore* CredentialBackingStore::instance() 42 { 43 static CredentialBackingStore* backingStore = 0; 44 if (!backingStore) { 45 backingStore = new CredentialBackingStore; 46 backingStore->open(pathByAppendingComponent(BlackBerry::Platform::Client::get()->getApplicationDataDirectory().c_str(), "/credentials.db")); 47 } 41 CredentialBackingStore& credentialBackingStore() 42 { 43 DEFINE_STATIC_LOCAL(CredentialBackingStore, backingStore, ()); 44 if (!backingStore.m_database.isOpen()) 45 backingStore.open(pathByAppendingComponent(BlackBerry::Platform::Client::get()->getApplicationDataDirectory().c_str(), "/credentials.db")); 48 46 return backingStore; 49 47 } … … 64 62 65 63 CredentialBackingStore::~CredentialBackingStore() 66 {67 if (m_database.isOpen())68 m_database.close();69 }70 71 bool CredentialBackingStore::open(const String& dbPath)72 {73 ASSERT(!m_database.isOpen());74 75 HANDLE_SQL_EXEC_FAILURE(!m_database.open(dbPath), false,76 "Failed to open database file %s for login database", dbPath.utf8().data());77 78 if (!m_database.tableExists("logins")) {79 HANDLE_SQL_EXEC_FAILURE(!m_database.executeCommand("CREATE TABLE logins (origin_url VARCHAR NOT NULL, host VARCHAR NOT NULL, port INTEGER, service_type INTEGER NOT NULL, realm VARCHAR, auth_scheme INTEGER NOT NULL, username VARCHAR, password BLOB) "),80 false, "Failed to create table logins for login database");81 82 // Create index for table logins.83 HANDLE_SQL_EXEC_FAILURE(!m_database.executeCommand("CREATE INDEX logins_index ON logins (host)"),84 false, "Failed to create index for table logins");85 }86 87 if (!m_database.tableExists("never_remember")) {88 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) "),89 false, "Failed to create table never_remember for login database");90 91 // Create index for table never_remember.92 HANDLE_SQL_EXEC_FAILURE(!m_database.executeCommand("CREATE INDEX never_remember_index ON never_remember (host)"),93 false, "Failed to create index for table never_remember");94 }95 96 // Prepare the statements.97 m_addLoginStatement = new SQLiteStatement(m_database, "INSERT OR REPLACE INTO logins (origin_url, host, port, service_type, realm, auth_scheme, username, password) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");98 HANDLE_SQL_EXEC_FAILURE(m_addLoginStatement->prepare() != SQLResultOk,99 false, "Failed to prepare addLogin statement");100 101 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 = ?");102 HANDLE_SQL_EXEC_FAILURE(m_updateLoginStatement->prepare() != SQLResultOk,103 false, "Failed to prepare updateLogin statement");104 105 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 = ?");106 HANDLE_SQL_EXEC_FAILURE(m_hasLoginStatement->prepare() != SQLResultOk,107 false, "Failed to prepare hasLogin statement");108 109 m_getLoginStatement = new SQLiteStatement(m_database, "SELECT username, password FROM logins WHERE host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?");110 HANDLE_SQL_EXEC_FAILURE(m_getLoginStatement->prepare() != SQLResultOk,111 false, "Failed to prepare getLogin statement");112 113 m_getLoginByURLStatement = new SQLiteStatement(m_database, "SELECT username, password FROM logins WHERE origin_url = ?");114 HANDLE_SQL_EXEC_FAILURE(m_getLoginByURLStatement->prepare() != SQLResultOk,115 false, "Failed to prepare getLoginByURL statement");116 117 m_removeLoginStatement = new SQLiteStatement(m_database, "DELETE FROM logins WHERE origin_url = ? AND host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?");118 HANDLE_SQL_EXEC_FAILURE(m_removeLoginStatement->prepare() != SQLResultOk,119 false, "Failed to prepare removeLogin statement");120 121 m_addNeverRememberStatement = new SQLiteStatement(m_database, "INSERT OR REPLACE INTO never_remember (origin_url, host, port, service_type, realm, auth_scheme) VALUES (?, ?, ?, ?, ?, ?)");122 HANDLE_SQL_EXEC_FAILURE(m_addNeverRememberStatement->prepare() != SQLResultOk,123 false, "Failed to prepare addNeverRemember statement");124 125 m_hasNeverRememberStatement = new SQLiteStatement(m_database, "SELECT COUNT(*) FROM never_remember WHERE host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?");126 HANDLE_SQL_EXEC_FAILURE(m_hasNeverRememberStatement->prepare() != SQLResultOk,127 false, "Failed to prepare hasNeverRemember statement");128 129 m_getNeverRememberStatement = new SQLiteStatement(m_database, "SELECT origin_url FROM never_remember WHERE host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?");130 HANDLE_SQL_EXEC_FAILURE(m_getNeverRememberStatement->prepare() != SQLResultOk,131 false, "Failed to prepare getNeverRemember statement");132 133 m_removeNeverRememberStatement = new SQLiteStatement(m_database, "DELETE FROM never_remember WHERE host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?");134 HANDLE_SQL_EXEC_FAILURE(m_removeNeverRememberStatement->prepare() != SQLResultOk,135 false, "Failed to prepare removeNeverRemember statement");136 137 return true;138 }139 140 void CredentialBackingStore::close()141 64 { 142 65 delete m_addLoginStatement; … … 165 88 } 166 89 90 bool CredentialBackingStore::open(const String& dbPath) 91 { 92 ASSERT(!m_database.isOpen()); 93 94 HANDLE_SQL_EXEC_FAILURE(!m_database.open(dbPath), false, 95 "Failed to open database file %s for login database", dbPath.utf8().data()); 96 97 if (!m_database.tableExists("logins")) { 98 HANDLE_SQL_EXEC_FAILURE(!m_database.executeCommand("CREATE TABLE logins (origin_url VARCHAR NOT NULL, host VARCHAR NOT NULL, port INTEGER, service_type INTEGER NOT NULL, realm VARCHAR, auth_scheme INTEGER NOT NULL, username VARCHAR, password BLOB) "), 99 false, "Failed to create table logins for login database"); 100 101 // Create index for table logins. 102 HANDLE_SQL_EXEC_FAILURE(!m_database.executeCommand("CREATE INDEX logins_index ON logins (host)"), 103 false, "Failed to create index for table logins"); 104 } 105 106 if (!m_database.tableExists("never_remember")) { 107 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) "), 108 false, "Failed to create table never_remember for login database"); 109 110 // Create index for table never_remember. 111 HANDLE_SQL_EXEC_FAILURE(!m_database.executeCommand("CREATE INDEX never_remember_index ON never_remember (host)"), 112 false, "Failed to create index for table never_remember"); 113 } 114 115 // Prepare the statements. 116 m_addLoginStatement = new SQLiteStatement(m_database, "INSERT OR REPLACE INTO logins (origin_url, host, port, service_type, realm, auth_scheme, username, password) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"); 117 HANDLE_SQL_EXEC_FAILURE(m_addLoginStatement->prepare() != SQLResultOk, 118 false, "Failed to prepare addLogin statement"); 119 120 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 = ?"); 121 HANDLE_SQL_EXEC_FAILURE(m_updateLoginStatement->prepare() != SQLResultOk, 122 false, "Failed to prepare updateLogin statement"); 123 124 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 = ?"); 125 HANDLE_SQL_EXEC_FAILURE(m_hasLoginStatement->prepare() != SQLResultOk, 126 false, "Failed to prepare hasLogin statement"); 127 128 m_getLoginStatement = new SQLiteStatement(m_database, "SELECT username, password FROM logins WHERE host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?"); 129 HANDLE_SQL_EXEC_FAILURE(m_getLoginStatement->prepare() != SQLResultOk, 130 false, "Failed to prepare getLogin statement"); 131 132 m_getLoginByURLStatement = new SQLiteStatement(m_database, "SELECT username, password FROM logins WHERE origin_url = ?"); 133 HANDLE_SQL_EXEC_FAILURE(m_getLoginByURLStatement->prepare() != SQLResultOk, 134 false, "Failed to prepare getLoginByURL statement"); 135 136 m_removeLoginStatement = new SQLiteStatement(m_database, "DELETE FROM logins WHERE origin_url = ? AND host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?"); 137 HANDLE_SQL_EXEC_FAILURE(m_removeLoginStatement->prepare() != SQLResultOk, 138 false, "Failed to prepare removeLogin statement"); 139 140 m_addNeverRememberStatement = new SQLiteStatement(m_database, "INSERT OR REPLACE INTO never_remember (origin_url, host, port, service_type, realm, auth_scheme) VALUES (?, ?, ?, ?, ?, ?)"); 141 HANDLE_SQL_EXEC_FAILURE(m_addNeverRememberStatement->prepare() != SQLResultOk, 142 false, "Failed to prepare addNeverRemember statement"); 143 144 m_hasNeverRememberStatement = new SQLiteStatement(m_database, "SELECT COUNT(*) FROM never_remember WHERE host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?"); 145 HANDLE_SQL_EXEC_FAILURE(m_hasNeverRememberStatement->prepare() != SQLResultOk, 146 false, "Failed to prepare hasNeverRemember statement"); 147 148 m_getNeverRememberStatement = new SQLiteStatement(m_database, "SELECT origin_url FROM never_remember WHERE host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?"); 149 HANDLE_SQL_EXEC_FAILURE(m_getNeverRememberStatement->prepare() != SQLResultOk, 150 false, "Failed to prepare getNeverRemember statement"); 151 152 m_removeNeverRememberStatement = new SQLiteStatement(m_database, "DELETE FROM never_remember WHERE host = ? AND port = ? AND service_type = ? AND realm = ? AND auth_scheme = ?"); 153 HANDLE_SQL_EXEC_FAILURE(m_removeNeverRememberStatement->prepare() != SQLResultOk, 154 false, "Failed to prepare removeNeverRemember statement"); 155 156 return true; 157 } 158 167 159 bool CredentialBackingStore::addLogin(const KURL& url, const ProtectionSpace& protectionSpace, const Credential& credential) 168 160 { -
trunk/Source/WebCore/platform/network/blackberry/CredentialBackingStore.h
r109697 r116258 32 32 class CredentialBackingStore { 33 33 public: 34 static CredentialBackingStore* instance(); 34 friend CredentialBackingStore& credentialBackingStore(); 35 35 36 ~CredentialBackingStore(); 36 37 bool open(const String& dbPath); 37 void close();38 38 bool addLogin(const KURL&, const ProtectionSpace&, const Credential&); 39 39 bool updateLogin(const KURL&, const ProtectionSpace&, const Credential&); … … 67 67 }; 68 68 69 CredentialBackingStore& credentialBackingStore(); 70 69 71 } // namespace WebCore 70 72 -
trunk/Source/WebCore/platform/network/blackberry/CredentialStorageBlackBerry.cpp
r101668 r116258 31 31 { 32 32 #if ENABLE(BLACKBERRY_CREDENTIAL_PERSIST) 33 return CredentialBackingStore::instance()->getLogin(protectionSpace);33 return credentialBackingStore().getLogin(protectionSpace); 34 34 #else 35 35 UNUSED_PARAM(protectionSpace); -
trunk/Source/WebKit/blackberry/ChangeLog
r116241 r116258 1 2012-05-06 Jonathan Dong <jonathan.dong@torchmobile.com.cn> 2 3 [BlackBerry] Autofill backing store implementation upstream 4 https://bugs.webkit.org/show_bug.cgi?id=85575 5 6 Reviewed by Rob Buis. 7 8 Replaced calling static function CredentialBackingStore::instance() 9 with calling the helper function credentialBackingStore(). 10 11 * WebCoreSupport/CredentialManager.cpp: 12 (WebCore::CredentialManager::autofillAuthenticationChallenge): 13 (WebCore::CredentialManager::autofillPasswordForms): 14 (WebCore::CredentialManager::saveCredentialIfConfirmed): 15 (WebCore::CredentialManager::clearCredentials): 16 (WebCore::CredentialManager::clearNeverRememberSites): 17 1 18 2012-05-06 Jonathan Dong <jonathan.dong@torchmobile.com.cn> 2 19 -
trunk/Source/WebKit/blackberry/WebCoreSupport/CredentialManager.cpp
r111811 r116258 44 44 void CredentialManager::autofillAuthenticationChallenge(const ProtectionSpace& protectionSpace, WebString& username, WebString& password) 45 45 { 46 if ( CredentialBackingStore::instance()->hasNeverRemember(protectionSpace))46 if (credentialBackingStore().hasNeverRemember(protectionSpace)) 47 47 return; 48 48 49 Credential savedCredential = CredentialBackingStore::instance()->getLogin(protectionSpace);49 Credential savedCredential = credentialBackingStore().getLogin(protectionSpace); 50 50 username = savedCredential.user(); 51 51 password = savedCredential.password(); … … 62 62 if (node && node->isHTMLElement()) { 63 63 CredentialTransformData data(static_cast<HTMLFormElement*>(node)); 64 if (!data.isValid() || ! CredentialBackingStore::instance()->hasLogin(data.url(), data.protectionSpace()))64 if (!data.isValid() || !credentialBackingStore().hasLogin(data.url(), data.protectionSpace())) 65 65 continue; 66 Credential savedCredential = CredentialBackingStore::instance()->getLogin(data.url());66 Credential savedCredential = credentialBackingStore().getLogin(data.url()); 67 67 data.setCredential(savedCredential); 68 68 } … … 74 74 ASSERT(pageClient); 75 75 76 if (!data.isValid() || data.credential().isEmpty() || CredentialBackingStore::instance()->hasNeverRemember(data.protectionSpace()))76 if (!data.isValid() || data.credential().isEmpty() || credentialBackingStore().hasNeverRemember(data.protectionSpace())) 77 77 return; 78 78 79 Credential savedCredential = CredentialBackingStore::instance()->getLogin(data.url());79 Credential savedCredential = credentialBackingStore().getLogin(data.url()); 80 80 if (savedCredential == data.credential()) 81 81 return; … … 84 84 if (type == PageClientBlackBerry::SaveCredentialYes) { 85 85 if (savedCredential.isEmpty()) 86 CredentialBackingStore::instance()->addLogin(data.url(), data.protectionSpace(), data.credential());86 credentialBackingStore().addLogin(data.url(), data.protectionSpace(), data.credential()); 87 87 else 88 CredentialBackingStore::instance()->updateLogin(data.url(), data.protectionSpace(), data.credential());88 credentialBackingStore().updateLogin(data.url(), data.protectionSpace(), data.credential()); 89 89 } else if (type == PageClientBlackBerry::SaveCredentialNeverForThisSite) { 90 CredentialBackingStore::instance()->addNeverRemember(data.url(), data.protectionSpace());91 CredentialBackingStore::instance()->removeLogin(data.url(), data.protectionSpace());90 credentialBackingStore().addNeverRemember(data.url(), data.protectionSpace()); 91 credentialBackingStore().removeLogin(data.url(), data.protectionSpace()); 92 92 } 93 93 } … … 95 95 void CredentialManager::clearCredentials() 96 96 { 97 CredentialBackingStore::instance()->clearLogins();97 credentialBackingStore().clearLogins(); 98 98 } 99 99 100 100 void CredentialManager::clearNeverRememberSites() 101 101 { 102 CredentialBackingStore::instance()->clearNeverRemember();102 credentialBackingStore().clearNeverRemember(); 103 103 } 104 104
Note: See TracChangeset
for help on using the changeset viewer.