Title: [246163] trunk/Source/WebKit
Revision
246163
Author
[email protected]
Date
2019-06-06 12:15:56 -0700 (Thu, 06 Jun 2019)

Log Message

NetworkHTTPSUpgradeChecker should construct and destruct database on the background thread
https://bugs.webkit.org/show_bug.cgi?id=198496

Reviewed by Chris Dumez.

* NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:
(WebKit::NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker):
(WebKit::NetworkHTTPSUpgradeChecker::~NetworkHTTPSUpgradeChecker):
* NetworkProcess/NetworkHTTPSUpgradeChecker.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (246162 => 246163)


--- trunk/Source/WebKit/ChangeLog	2019-06-06 19:07:55 UTC (rev 246162)
+++ trunk/Source/WebKit/ChangeLog	2019-06-06 19:15:56 UTC (rev 246163)
@@ -1,3 +1,15 @@
+2019-06-06  Sihui Liu  <[email protected]>
+
+        NetworkHTTPSUpgradeChecker should construct and destruct database on the background thread
+        https://bugs.webkit.org/show_bug.cgi?id=198496
+
+        Reviewed by Chris Dumez.
+
+        * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp:
+        (WebKit::NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker):
+        (WebKit::NetworkHTTPSUpgradeChecker::~NetworkHTTPSUpgradeChecker):
+        * NetworkProcess/NetworkHTTPSUpgradeChecker.h:
+
 2019-06-06  Truitt Savell  <[email protected]>
 
         Unreviewed, rolling out r246137.

Modified: trunk/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp (246162 => 246163)


--- trunk/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp	2019-06-06 19:07:55 UTC (rev 246162)
+++ trunk/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp	2019-06-06 19:15:56 UTC (rev 246163)
@@ -39,6 +39,8 @@
 
 namespace WebKit {
 
+constexpr auto httpsUpgradeCheckerQuery = "SELECT host FROM hosts WHERE host = ?"_s;
+
 static const String& networkHTTPSUpgradeCheckerDatabasePath()
 {
     static NeverDestroyed<String> networkHTTPSUpgradeCheckerDatabasePath;
@@ -55,8 +57,6 @@
 
 NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker()
     : m_workQueue(WorkQueue::create("HTTPS Upgrade Checker Thread"))
-    , m_database(makeUniqueRef<WebCore::SQLiteDatabase>())
-    , m_statement(makeUniqueRef<WebCore::SQLiteStatement>(m_database.get(), "SELECT host FROM hosts WHERE host = ?;"_s))
 {
     ASSERT(RunLoop::isMain());
 
@@ -67,6 +67,7 @@
             return;
         }
 
+        m_database = std::make_unique<SQLiteDatabase>();
         bool isDatabaseOpen = m_database->open(path, WebCore::SQLiteDatabase::OpenMode::ReadOnly);
         if (!isDatabaseOpen) {
 #if PLATFORM(COCOA)
@@ -79,6 +80,7 @@
         // Since we are using a workerQueue, the sequential dispatch blocks may be called by different threads.
         m_database->disableThreadingChecks();
 
+        m_statement = std::make_unique<SQLiteStatement>(*m_database, httpsUpgradeCheckerQuery);
         int isStatementPrepared = (m_statement->prepare() == SQLITE_OK);
         ASSERT(isStatementPrepared);
         if (!isStatementPrepared)
@@ -90,8 +92,8 @@
 
 NetworkHTTPSUpgradeChecker::~NetworkHTTPSUpgradeChecker()
 {
-    // This object should be owned by a singleton object.
-    ASSERT_NOT_REACHED();
+    if (m_database)
+        m_workQueue->dispatch([database = WTFMove(m_database), statement = WTFMove(m_statement)] { });
 }
 
 void NetworkHTTPSUpgradeChecker::query(String&& host, PAL::SessionID sessionID, CompletionHandler<void(bool)>&& callback)

Modified: trunk/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.h (246162 => 246163)


--- trunk/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.h	2019-06-06 19:07:55 UTC (rev 246162)
+++ trunk/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.h	2019-06-06 19:15:56 UTC (rev 246163)
@@ -44,7 +44,7 @@
 class NetworkHTTPSUpgradeChecker {
 public:
     NetworkHTTPSUpgradeChecker();
-    NO_RETURN_DUE_TO_ASSERT ~NetworkHTTPSUpgradeChecker();
+    ~NetworkHTTPSUpgradeChecker();
 
     // Returns `true` after internal setup is successfully completed. If there is an error with setup, or if setup is in-progress, it will return `false`.
     bool didSetupCompleteSuccessfully() const { return m_didSetupCompleteSuccessfully; };
@@ -54,8 +54,8 @@
 
 private:
     Ref<WorkQueue> m_workQueue;
-    UniqueRef<WebCore::SQLiteDatabase> m_database;
-    UniqueRef<WebCore::SQLiteStatement> m_statement;
+    std::unique_ptr<WebCore::SQLiteDatabase> m_database;
+    std::unique_ptr<WebCore::SQLiteStatement> m_statement;
     std::atomic<bool> m_didSetupCompleteSuccessfully { false };
 };
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to