⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 244257 in webkit


Ignore:
Timestamp:
Apr 15, 2019, 12:43:43 AM (7 years ago)
Author:
bshafiei@apple.com
Message:

Revert r244131. rdar://problem/49894388

Location:
branches/safari-607-branch/Source
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • branches/safari-607-branch/Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp

    r244131 r244257  
    8181}
    8282
    83 bool DatabaseTracker::isInitialized()
    84 {
    85     return !!staticTracker;
    86 }
    87    
    8883DatabaseTracker& DatabaseTracker::singleton()
    8984{
  • branches/safari-607-branch/Source/WebCore/Modules/webdatabase/DatabaseTracker.h

    r244131 r244257  
    6060
    6161    WEBCORE_EXPORT static DatabaseTracker& singleton();
    62     WEBCORE_EXPORT static bool isInitialized();
    6362    // This singleton will potentially be used from multiple worker threads and the page's context thread simultaneously.  To keep this safe, it's
    6463    // currently using 4 locks.  In order to avoid deadlock when taking multiple locks, you must take them in the correct order:
  • branches/safari-607-branch/Source/WebCore/platform/sql/SQLiteDatabase.cpp

    r244131 r244257  
    7272}
    7373
    74 static bool isDatabaseOpeningForbidden = false;
    75 static Lock isDatabaseOpeningForbiddenMutex;
    76 
    77 void SQLiteDatabase::setIsDatabaseOpeningForbidden(bool isForbidden)
    78 {
    79     std::lock_guard<Lock> lock(isDatabaseOpeningForbiddenMutex);
    80     isDatabaseOpeningForbidden = isForbidden;
    81 }
    82 
    8374SQLiteDatabase::SQLiteDatabase() = default;
    8475
     
    9485    close();
    9586
    96     {
    97         std::lock_guard<Lock> lock(isDatabaseOpeningForbiddenMutex);
    98         m_openError = SQLiteFileSystem::openDatabase(filename, &m_db, forWebSQLDatabase);
    99         if (m_openError != SQLITE_OK) {
    100             m_openErrorMessage = m_db ? sqlite3_errmsg(m_db) : "sqlite_open returned null";
    101             LOG_ERROR("SQLite database failed to load from %s\nCause - %s", filename.ascii().data(),
    102                 m_openErrorMessage.data());
    103             sqlite3_close(m_db);
    104             m_db = 0;
    105             return false;
    106         }
     87    m_openError = SQLiteFileSystem::openDatabase(filename, &m_db, forWebSQLDatabase);
     88    if (m_openError != SQLITE_OK) {
     89        m_openErrorMessage = m_db ? sqlite3_errmsg(m_db) : "sqlite_open returned null";
     90        LOG_ERROR("SQLite database failed to load from %s\nCause - %s", filename.ascii().data(),
     91            m_openErrorMessage.data());
     92        sqlite3_close(m_db);
     93        m_db = 0;
     94        return false;
    10795    }
    10896
  • branches/safari-607-branch/Source/WebCore/platform/sql/SQLiteDatabase.h

    r244131 r244257  
    137137#endif
    138138
    139     WEBCORE_EXPORT static void setIsDatabaseOpeningForbidden(bool);
    140 
    141139private:
    142140    static int authorizerFunction(void*, int, const char*, const char*, const char*, const char*);
  • branches/safari-607-branch/Source/WebCore/platform/sql/SQLiteDatabaseTracker.cpp

    r244131 r244257  
    4141void setClient(SQLiteDatabaseTrackerClient* client)
    4242{
    43     std::lock_guard<Lock> lock(transactionInProgressMutex);
     43    ASSERT(client);
     44    ASSERT(!s_staticSQLiteDatabaseTrackerClient || s_staticSQLiteDatabaseTrackerClient == client);
    4445    s_staticSQLiteDatabaseTrackerClient = client;
    4546}
     
    4748void incrementTransactionInProgressCount()
    4849{
    49     std::lock_guard<Lock> lock(transactionInProgressMutex);
    5050    if (!s_staticSQLiteDatabaseTrackerClient)
    5151        return;
     52
     53    std::lock_guard<Lock> lock(transactionInProgressMutex);
    5254
    5355    s_transactionInProgressCounter++;
     
    5860void decrementTransactionInProgressCount()
    5961{
    60     std::lock_guard<Lock> lock(transactionInProgressMutex);
    6162    if (!s_staticSQLiteDatabaseTrackerClient)
    6263        return;
     64
     65    std::lock_guard<Lock> lock(transactionInProgressMutex);
    6366
    6467    ASSERT(s_transactionInProgressCounter);
     
    7275bool hasTransactionInProgress()
    7376{
    74     std::lock_guard<Lock> lock(transactionInProgressMutex);
    7577    return !s_staticSQLiteDatabaseTrackerClient || s_transactionInProgressCounter > 0;
    7678}
  • branches/safari-607-branch/Source/WebKit/Shared/WebSQLiteDatabaseTracker.cpp

    r244131 r244257  
    5353}
    5454
    55 WebSQLiteDatabaseTracker::~WebSQLiteDatabaseTracker()
    56 {
    57     ASSERT(RunLoop::isMain());
    58     SQLiteDatabaseTracker::setClient(nullptr);
    59 
    60     if (m_hysteresis.state() == PAL::HysteresisState::Started)
    61         hysteresisUpdated(PAL::HysteresisState::Stopped);
    62 }
    63 
    6455void WebSQLiteDatabaseTracker::willBeginFirstTransaction()
    6556{
  • branches/safari-607-branch/Source/WebKit/Shared/WebSQLiteDatabaseTracker.h

    r244131 r244257  
    4343    explicit WebSQLiteDatabaseTracker(WebProcess&);
    4444
    45     ~WebSQLiteDatabaseTracker();
    46 
    4745    // WebCore::SQLiteDatabaseTrackerClient
    4846    void willBeginFirstTransaction() override;
  • branches/safari-607-branch/Source/WebKit/WebProcess/WebProcess.cpp

    r244131 r244257  
    137137#endif
    138138
    139 #if PLATFORM(IOS_FAMILY)
    140 #include "WebSQLiteDatabaseTracker.h"
    141 #endif
    142 
    143139#if ENABLE(SEC_ITEM_SHIM)
    144140#include "SecItemShim.h"
     
    188184    , m_nonVisibleProcessCleanupTimer(*this, &WebProcess::nonVisibleProcessCleanupTimerFired)
    189185#if PLATFORM(IOS_FAMILY)
    190     , m_webSQLiteDatabaseTracker(std::make_unique<WebSQLiteDatabaseTracker>(*this))
     186    , m_webSQLiteDatabaseTracker(*this)
    191187#endif
    192188{
     
    14521448
    14531449#if PLATFORM(IOS_FAMILY)
    1454     m_webSQLiteDatabaseTracker = nullptr;
    1455     SQLiteDatabase::setIsDatabaseOpeningForbidden(true);
    1456     if (DatabaseTracker::isInitialized())
    1457         DatabaseTracker::singleton().closeAllDatabases(CurrentQueryBehavior::Interrupt);
    14581450    accessibilityProcessSuspendedNotification(true);
    14591451#endif
     
    14831475
    14841476    RELEASE_LOG(ProcessSuspension, "%p - WebProcess::processWillSuspendImminently()", this);
     1477    DatabaseTracker::singleton().closeAllDatabases(CurrentQueryBehavior::Interrupt);
    14851478    actualPrepareToSuspend(ShouldAcknowledgeWhenReadyToSuspend::No);
    14861479    handled = true;
     
    14991492
    15001493#if PLATFORM(IOS_FAMILY)
    1501     m_webSQLiteDatabaseTracker = std::make_unique<WebSQLiteDatabaseTracker>(*this);
    1502     SQLiteDatabase::setIsDatabaseOpeningForbidden(false);
    15031494    accessibilityProcessSuspendedNotification(false);
    15041495#endif
     
    15681559   
    15691560#if PLATFORM(IOS_FAMILY)
    1570     m_webSQLiteDatabaseTracker = std::make_unique<WebSQLiteDatabaseTracker>(*this);
    1571     SQLiteDatabase::setIsDatabaseOpeningForbidden(false);
    15721561    accessibilityProcessSuspendedNotification(false);
    15731562#endif
  • branches/safari-607-branch/Source/WebKit/WebProcess/WebProcess.h

    r244256 r244257  
    5353#endif
    5454
     55#if PLATFORM(IOS_FAMILY)
     56#include "WebSQLiteDatabaseTracker.h"
     57#endif
     58
    5559namespace API {
    5660class Object;
     
    103107struct WebPageGroupData;
    104108struct WebPreferencesStore;
    105 class WebSQLiteDatabaseTracker
    106109struct WebProcessCreationParameters;
    107110struct WebsiteData;
     
    465468
    466469#if PLATFORM(IOS_FAMILY)
    467     std::unique_ptr<WebSQLiteDatabaseTracker> m_webSQLiteDatabaseTracker;
     470    WebSQLiteDatabaseTracker m_webSQLiteDatabaseTracker;
    468471#endif
    469472
Note: See TracChangeset for help on using the changeset viewer.