Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(136)

Side by Side Diff: Source/modules/webdatabase/DatabaseBackendBase.cpp

Issue 18548003: Rename ExceptionCode constants to use the names in the spec (2/3) (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * Copyright (C) 2013 Apple Inc. All rights reserved. 3 * Copyright (C) 2013 Apple Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 bool DatabaseBackendBase::performOpenAndVerify(bool shouldSetVersionInNewDatabas e, DatabaseError& error, String& errorMessage) 303 bool DatabaseBackendBase::performOpenAndVerify(bool shouldSetVersionInNewDatabas e, DatabaseError& error, String& errorMessage)
304 { 304 {
305 DoneCreatingDatabaseOnExitCaller onExitCaller(this); 305 DoneCreatingDatabaseOnExitCaller onExitCaller(this);
306 ASSERT(errorMessage.isEmpty()); 306 ASSERT(errorMessage.isEmpty());
307 ASSERT(error == DatabaseError::None); // Better not have any errors already. 307 ASSERT(error == DatabaseError::None); // Better not have any errors already.
308 error = DatabaseError::InvalidDatabaseState; // Presumed failure. We'll clea r it if we succeed below. 308 error = DatabaseError::InvalidDatabaseState; // Presumed failure. We'll clea r it if we succeed below.
309 309
310 const int maxSqliteBusyWaitTime = 30000; 310 const int maxSqliteBusyWaitTime = 30000;
311 311
312 if (!m_sqliteDatabase.open(m_filename, true)) { 312 if (!m_sqliteDatabase.open(m_filename, true)) {
313 reportOpenDatabaseResult(1, INVALID_STATE_ERR, m_sqliteDatabase.lastErro r()); 313 reportOpenDatabaseResult(1, InvalidStateError, m_sqliteDatabase.lastErro r());
314 errorMessage = formatErrorMessage("unable to open database", m_sqliteDat abase.lastError(), m_sqliteDatabase.lastErrorMsg()); 314 errorMessage = formatErrorMessage("unable to open database", m_sqliteDat abase.lastError(), m_sqliteDatabase.lastErrorMsg());
315 return false; 315 return false;
316 } 316 }
317 if (!m_sqliteDatabase.turnOnIncrementalAutoVacuum()) 317 if (!m_sqliteDatabase.turnOnIncrementalAutoVacuum())
318 LOG_ERROR("Unable to turn on incremental auto-vacuum (%d %s)", m_sqliteD atabase.lastError(), m_sqliteDatabase.lastErrorMsg()); 318 LOG_ERROR("Unable to turn on incremental auto-vacuum (%d %s)", m_sqliteD atabase.lastError(), m_sqliteDatabase.lastErrorMsg());
319 319
320 m_sqliteDatabase.setBusyTimeout(maxSqliteBusyWaitTime); 320 m_sqliteDatabase.setBusyTimeout(maxSqliteBusyWaitTime);
321 321
322 String currentVersion; 322 String currentVersion;
323 { 323 {
(...skipping 18 matching lines...) Expand all
342 currentVersion = versionFromDatabase; 342 currentVersion = versionFromDatabase;
343 updateGuidVersionMap(m_guid, currentVersion); 343 updateGuidVersionMap(m_guid, currentVersion);
344 } 344 }
345 m_sqliteDatabase.setBusyTimeout(maxSqliteBusyWaitTime); 345 m_sqliteDatabase.setBusyTimeout(maxSqliteBusyWaitTime);
346 } else { 346 } else {
347 LOG(StorageAPI, "No cached version for guid %i", m_guid); 347 LOG(StorageAPI, "No cached version for guid %i", m_guid);
348 348
349 SQLiteTransaction transaction(m_sqliteDatabase); 349 SQLiteTransaction transaction(m_sqliteDatabase);
350 transaction.begin(); 350 transaction.begin();
351 if (!transaction.inProgress()) { 351 if (!transaction.inProgress()) {
352 reportOpenDatabaseResult(2, INVALID_STATE_ERR, m_sqliteDatabase. lastError()); 352 reportOpenDatabaseResult(2, InvalidStateError, m_sqliteDatabase. lastError());
353 errorMessage = formatErrorMessage("unable to open database, fail ed to start transaction", m_sqliteDatabase.lastError(), m_sqliteDatabase.lastErr orMsg()); 353 errorMessage = formatErrorMessage("unable to open database, fail ed to start transaction", m_sqliteDatabase.lastError(), m_sqliteDatabase.lastErr orMsg());
354 m_sqliteDatabase.close(); 354 m_sqliteDatabase.close();
355 return false; 355 return false;
356 } 356 }
357 357
358 String tableName(infoTableName); 358 String tableName(infoTableName);
359 if (!m_sqliteDatabase.tableExists(tableName)) { 359 if (!m_sqliteDatabase.tableExists(tableName)) {
360 m_new = true; 360 m_new = true;
361 361
362 if (!m_sqliteDatabase.executeCommand("CREATE TABLE " + tableName + " (key TEXT NOT NULL ON CONFLICT FAIL UNIQUE ON CONFLICT REPLACE,value TEXT N OT NULL ON CONFLICT FAIL);")) { 362 if (!m_sqliteDatabase.executeCommand("CREATE TABLE " + tableName + " (key TEXT NOT NULL ON CONFLICT FAIL UNIQUE ON CONFLICT REPLACE,value TEXT N OT NULL ON CONFLICT FAIL);")) {
363 reportOpenDatabaseResult(3, INVALID_STATE_ERR, m_sqliteDatab ase.lastError()); 363 reportOpenDatabaseResult(3, InvalidStateError, m_sqliteDatab ase.lastError());
364 errorMessage = formatErrorMessage("unable to open database, failed to create 'info' table", m_sqliteDatabase.lastError(), m_sqliteDatabase.l astErrorMsg()); 364 errorMessage = formatErrorMessage("unable to open database, failed to create 'info' table", m_sqliteDatabase.lastError(), m_sqliteDatabase.l astErrorMsg());
365 transaction.rollback(); 365 transaction.rollback();
366 m_sqliteDatabase.close(); 366 m_sqliteDatabase.close();
367 return false; 367 return false;
368 } 368 }
369 } else if (!getVersionFromDatabase(currentVersion, false)) { 369 } else if (!getVersionFromDatabase(currentVersion, false)) {
370 reportOpenDatabaseResult(4, INVALID_STATE_ERR, m_sqliteDatabase. lastError()); 370 reportOpenDatabaseResult(4, InvalidStateError, m_sqliteDatabase. lastError());
371 errorMessage = formatErrorMessage("unable to open database, fail ed to read current version", m_sqliteDatabase.lastError(), m_sqliteDatabase.last ErrorMsg()); 371 errorMessage = formatErrorMessage("unable to open database, fail ed to read current version", m_sqliteDatabase.lastError(), m_sqliteDatabase.last ErrorMsg());
372 transaction.rollback(); 372 transaction.rollback();
373 m_sqliteDatabase.close(); 373 m_sqliteDatabase.close();
374 return false; 374 return false;
375 } 375 }
376 376
377 if (currentVersion.length()) { 377 if (currentVersion.length()) {
378 LOG(StorageAPI, "Retrieved current version %s from database %s", currentVersion.ascii().data(), databaseDebugName().ascii().data()); 378 LOG(StorageAPI, "Retrieved current version %s from database %s", currentVersion.ascii().data(), databaseDebugName().ascii().data());
379 } else if (!m_new || shouldSetVersionInNewDatabase) { 379 } else if (!m_new || shouldSetVersionInNewDatabase) {
380 LOG(StorageAPI, "Setting version %s in database %s that was just created", m_expectedVersion.ascii().data(), databaseDebugName().ascii().data()) ; 380 LOG(StorageAPI, "Setting version %s in database %s that was just created", m_expectedVersion.ascii().data(), databaseDebugName().ascii().data()) ;
381 if (!setVersionInDatabase(m_expectedVersion, false)) { 381 if (!setVersionInDatabase(m_expectedVersion, false)) {
382 reportOpenDatabaseResult(5, INVALID_STATE_ERR, m_sqliteDatab ase.lastError()); 382 reportOpenDatabaseResult(5, InvalidStateError, m_sqliteDatab ase.lastError());
383 errorMessage = formatErrorMessage("unable to open database, failed to write current version", m_sqliteDatabase.lastError(), m_sqliteDatabase .lastErrorMsg()); 383 errorMessage = formatErrorMessage("unable to open database, failed to write current version", m_sqliteDatabase.lastError(), m_sqliteDatabase .lastErrorMsg());
384 transaction.rollback(); 384 transaction.rollback();
385 m_sqliteDatabase.close(); 385 m_sqliteDatabase.close();
386 return false; 386 return false;
387 } 387 }
388 currentVersion = m_expectedVersion; 388 currentVersion = m_expectedVersion;
389 } 389 }
390 updateGuidVersionMap(m_guid, currentVersion); 390 updateGuidVersionMap(m_guid, currentVersion);
391 transaction.commit(); 391 transaction.commit();
392 } 392 }
393 } 393 }
394 394
395 if (currentVersion.isNull()) { 395 if (currentVersion.isNull()) {
396 LOG(StorageAPI, "Database %s does not have its version set", databaseDeb ugName().ascii().data()); 396 LOG(StorageAPI, "Database %s does not have its version set", databaseDeb ugName().ascii().data());
397 currentVersion = ""; 397 currentVersion = "";
398 } 398 }
399 399
400 // If the expected version isn't the empty string, ensure that the current d atabase version we have matches that version. Otherwise, set an exception. 400 // If the expected version isn't the empty string, ensure that the current d atabase version we have matches that version. Otherwise, set an exception.
401 // If the expected version is the empty string, then we always return with w hatever version of the database we have. 401 // If the expected version is the empty string, then we always return with w hatever version of the database we have.
402 if ((!m_new || shouldSetVersionInNewDatabase) && m_expectedVersion.length() && m_expectedVersion != currentVersion) { 402 if ((!m_new || shouldSetVersionInNewDatabase) && m_expectedVersion.length() && m_expectedVersion != currentVersion) {
403 reportOpenDatabaseResult(6, INVALID_STATE_ERR, 0); 403 reportOpenDatabaseResult(6, InvalidStateError, 0);
404 errorMessage = "unable to open database, version mismatch, '" + m_expect edVersion + "' does not match the currentVersion of '" + currentVersion + "'"; 404 errorMessage = "unable to open database, version mismatch, '" + m_expect edVersion + "' does not match the currentVersion of '" + currentVersion + "'";
405 m_sqliteDatabase.close(); 405 m_sqliteDatabase.close();
406 return false; 406 return false;
407 } 407 }
408 408
409 ASSERT(m_databaseAuthorizer); 409 ASSERT(m_databaseAuthorizer);
410 m_sqliteDatabase.setAuthorizer(m_databaseAuthorizer); 410 m_sqliteDatabase.setAuthorizer(m_databaseAuthorizer);
411 411
412 // See comment at the top this file regarding calling addOpenDatabase(). 412 // See comment at the top this file regarding calling addOpenDatabase().
413 DatabaseTracker::tracker().addOpenDatabase(this); 413 DatabaseTracker::tracker().addOpenDatabase(this);
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 DatabaseObserver::reportExecuteStatementResult(this, errorSite, webSqlErrorC ode, sqliteErrorCode); 630 DatabaseObserver::reportExecuteStatementResult(this, errorSite, webSqlErrorC ode, sqliteErrorCode);
631 } 631 }
632 632
633 void DatabaseBackendBase::reportVacuumDatabaseResult(int sqliteErrorCode) 633 void DatabaseBackendBase::reportVacuumDatabaseResult(int sqliteErrorCode)
634 { 634 {
635 DatabaseObserver::reportVacuumDatabaseResult(this, sqliteErrorCode); 635 DatabaseObserver::reportVacuumDatabaseResult(this, sqliteErrorCode);
636 } 636 }
637 637
638 638
639 } // namespace WebCore 639 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/modules/webdatabase/DOMWindowWebDatabase.cpp ('k') | Source/modules/webdatabase/DatabaseManager.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698