WebKit Bugzilla
Attachment 371326 Details for
Bug 198496
: NetworkHTTPSUpgradeChecker should construct and destruct database on the background thread
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch for landing
bug-198496-20190604131626.patch (text/plain), 4.35 KB, created by
Sihui Liu
on 2019-06-04 13:16:26 PDT
(
hide
)
Description:
Patch for landing
Filename:
MIME Type:
Creator:
Sihui Liu
Created:
2019-06-04 13:16:26 PDT
Size:
4.35 KB
patch
obsolete
>Subversion Revision: 246077 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index cab1e0c9a3f094d9473419bf7bd22c49633ad354..d26f4fd4c4a137d8528932f3007017f7447abc51 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,15 @@ >+2019-06-04 Sihui Liu <sihui_liu@apple.com> >+ >+ 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-04 Alex Christensen <achristensen@apple.com> > > Uploading third-party applications from /Applications needs additional syscall access >diff --git a/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp b/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp >index 156a625ce58454cb24141f84a7a87dd479c63d13..f8cd8685423c76f1b9426050bb2c40e203345196 100644 >--- a/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp >+++ b/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp >@@ -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 @@ static const String& networkHTTPSUpgradeCheckerDatabasePath() > > 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 @@ NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker() > 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 @@ NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker() > // 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() > > 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) >diff --git a/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.h b/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.h >index cc39f036374f70376b1afe8a82e7a6f1b90987b7..dcd46a601be630986fc2ae0c1c96558c9592208a 100644 >--- a/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.h >+++ b/Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.h >@@ -44,7 +44,7 @@ namespace WebKit { > 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 @@ public: > > 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 }; > }; >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 198496
:
371210
|
371300
|
371326
|
371513