RESOLVED FIXED189415
Move IndexedDB to Network Process
https://bugs.webkit.org/show_bug.cgi?id=189415
Summary Move IndexedDB to Network Process
Sihui Liu
Reported 2018-09-07 10:35:26 PDT
Start to shrink storage process.
Attachments
Patch (162.26 KB, patch)
2018-09-07 10:58 PDT, Sihui Liu
no flags
Patch (162.86 KB, patch)
2018-09-07 11:04 PDT, Sihui Liu
no flags
Patch (163.22 KB, patch)
2018-09-07 11:41 PDT, Sihui Liu
no flags
Patch (164.78 KB, patch)
2018-09-07 12:22 PDT, Sihui Liu
no flags
Archive of layout-test-results from ews104 for mac-sierra-wk2 (3.13 MB, application/zip)
2018-09-07 13:35 PDT, EWS Watchlist
no flags
Archive of layout-test-results from ews124 for ios-simulator-wk2 (8.67 MB, application/zip)
2018-09-07 14:29 PDT, EWS Watchlist
no flags
Patch (165.99 KB, patch)
2018-09-07 14:40 PDT, Sihui Liu
no flags
Patch (165.88 KB, patch)
2018-09-07 14:49 PDT, Sihui Liu
no flags
Patch (167.58 KB, patch)
2018-09-10 15:49 PDT, Sihui Liu
no flags
Patch for landing (167.57 KB, patch)
2018-09-14 11:05 PDT, Sihui Liu
no flags
Patch (167.57 KB, patch)
2018-09-14 11:07 PDT, Sihui Liu
no flags
Patch for landing (167.12 KB, patch)
2018-09-16 23:34 PDT, Sihui Liu
no flags
Sihui Liu
Comment 1 2018-09-07 10:58:39 PDT
Sihui Liu
Comment 2 2018-09-07 11:04:54 PDT
Sihui Liu
Comment 3 2018-09-07 11:41:30 PDT
Sihui Liu
Comment 4 2018-09-07 12:22:19 PDT
Sam Weinig
Comment 5 2018-09-07 13:29:29 PDT
Why are we doing this?
EWS Watchlist
Comment 6 2018-09-07 13:34:59 PDT
Comment on attachment 349176 [details] Patch Attachment 349176 [details] did not pass mac-wk2-ews (mac-wk2): Output: https://webkit-queues.webkit.org/results/9131712 New failing tests: storage/indexeddb/modern/opendatabase-after-storage-crash.html
EWS Watchlist
Comment 7 2018-09-07 13:35:00 PDT
Created attachment 349185 [details] Archive of layout-test-results from ews104 for mac-sierra-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews104 Port: mac-sierra-wk2 Platform: Mac OS X 10.12.6
EWS Watchlist
Comment 8 2018-09-07 14:29:33 PDT
Comment on attachment 349176 [details] Patch Attachment 349176 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: https://webkit-queues.webkit.org/results/9131924 New failing tests: storage/indexeddb/modern/opendatabase-after-storage-crash.html
EWS Watchlist
Comment 9 2018-09-07 14:29:35 PDT
Created attachment 349191 [details] Archive of layout-test-results from ews124 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews124 Port: ios-simulator-wk2 Platform: Mac OS X 10.13.4
Sihui Liu
Comment 10 2018-09-07 14:40:08 PDT
Sihui Liu
Comment 11 2018-09-07 14:45:52 PDT
(In reply to Sam Weinig from comment #5) > Why are we doing this? We want to remove storage process to reduce resource usage.
Sihui Liu
Comment 12 2018-09-07 14:49:31 PDT
Sam Weinig
Comment 13 2018-09-07 18:57:18 PDT
(In reply to Sihui Liu from comment #11) > (In reply to Sam Weinig from comment #5) > > Why are we doing this? > > We want to remove storage process to reduce resource usage. I'm not sure I understand. Can you expand on this?
Ryosuke Niwa
Comment 14 2018-09-08 16:05:39 PDT
If I understand correctly, we want to merge the storage process into the network process to eliminate the overhead of having a separate process for storage access, and reduce the latency for service workers. An alternative idea we considered was moving this code into UI process but we decided not to do because that would make any bugs in our storage code to potentially give access to the entirely of the file system on macOS in the case the app is not sandboxed. Finally, we have some need to potentially make network/storage processes dedicated per web site storage location (as opposed to per process pool) to avoid data corruptions, and that work would be a lot easier if we had one process instead of two.
Sam Weinig
Comment 15 2018-09-08 17:28:45 PDT
(In reply to Ryosuke Niwa from comment #14) > If I understand correctly, we want to merge the storage process into the > network process to eliminate the overhead of having a separate process for > storage access, and reduce the latency for service workers. Seems like an admirable goal. Do you have any measurements you can share that lead you to this decision? I am particularly interested in what kind of latency is being observed for service workers. > An alternative idea we considered was moving this code into UI process but > we decided not to do because that would make any bugs in our storage code to > potentially give access to the entirely of the file system on macOS in the > case the app is not sandboxed. Definitely would be worse from a security perspective to move things to the UI process, but you are not quite right in saying that bugs in the storage code would give access to the entire file system on macOS, it would only have access to the embedding app's sandbox. We definitely moved things out of the UI Process on purpose.
Ryosuke Niwa
Comment 16 2018-09-08 23:34:08 PDT
(In reply to Sam Weinig from comment #15) > (In reply to Ryosuke Niwa from comment #14) > > If I understand correctly, we want to merge the storage process into the > > network process to eliminate the overhead of having a separate process for > > storage access, and reduce the latency for service workers. > > Seems like an admirable goal. Do you have any measurements you can share > that lead you to this decision? I am particularly interested in what kind of > latency is being observed for service workers. I believe Youenn & Chris know about this. > > An alternative idea we considered was moving this code into UI process but > > we decided not to do because that would make any bugs in our storage code to > > potentially give access to the entirely of the file system on macOS in the > > case the app is not sandboxed. > > Definitely would be worse from a security perspective to move things to the > UI process, but you are not quite right in saying that bugs in the storage > code would give access to the entire file system on macOS, it would only > have access to the embedding app's sandbox. We definitely moved things out > of the UI Process on purpose. Right, in the case app DOES have a sandbox, it would be limited to that. But I believe there are many macOS apps that don't have any sandboxes, and in those apps, we'd end up letting malicious code access anything if I understand correctly. I think there was also a concern that letting malicious code access the entirely of the app sandbox might be also bad. e.g. being able to read Safari bookmarks & history would be pretty bad.
Geoffrey Garen
Comment 17 2018-09-09 12:40:30 PDT
> > If I understand correctly, we want to merge the storage process into the > > network process to eliminate the overhead of having a separate process for > > storage access, and reduce the latency for service workers. > > Seems like an admirable goal. Do you have any measurements you can share > that lead you to this decision? I am particularly interested in what kind of > latency is being observed for service workers. For memory, Activity Monitor says the Storage process costs about 5MB. For latency, Apple's internal launch time benchmarks measured a regression when we first enabled Service Workers, which required the storage process on startup. (We worked around that problem by deferring storage process startup on systems that had never registered a service worker -- but the potential regression remains, and service workers are becoming more popular.) Relatedly, PerformanceTests/LaunchTime says the latency of WebContent process launch is about 300ms on a MacBook Pro. Storage process launch isn't identical, but it's similar enough.
Geoffrey Garen
Comment 18 2018-09-09 12:55:17 PDT
Comment on attachment 349198 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=349198&action=review > Source/WebKit/ChangeLog:7 > + A few good things to explain here: What's the motivation for this change? Do we expect an observable performance or behavior change? Is this a complete patch, or is it part of an ongoing series of patches? (I think I know the answers to these questions, but other WebKit contributors won't.) > Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:157 > +#if ENABLE(INDEXED_DATABASE) > + if (decoder.messageReceiverName() == Messages::WebIDBConnectionToClient::messageReceiverName()) { > + auto iterator = m_webIDBConnections.find(decoder.destinationID()); > + if (iterator != m_webIDBConnections.end()) > + iterator->value->didReceiveMessage(connection, decoder); > + return; > + } > +#endif This kind of change is good to explain in the ChangeLog entry for NetworkConnectionToWebProcess::didReceiveMessage. In particular, it's interesting to know if you just moved this code from StorageToWebProcessConnection::didReceiveMessage, or if you made any changes to it. > Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:514 > - NetworkProcess::singleton().grantSandboxExtensionsToStorageProcessForBlobs(fileNames, [this, protectedThis = WTFMove(protectedThis), requestIdentifier, fileNames]() { > - if (!m_connection->isValid()) > - return; > - > - m_connection->send(Messages::NetworkProcessConnection::DidWriteBlobsToTemporaryFiles(requestIdentifier, fileNames), 0); > +#if ENABLE(SANDBOX_EXTENSIONS) > + NetworkProcess::singleton().getSandboxExtensionsForBlobFiles(fileNames, [protectedThis = WTFMove(protectedThis), fileNames](SandboxExtension::HandleArray&& handles) { > + ASSERT(fileNames.size() == handles.size()); > + NetworkProcess::singleton().updateTemporaryFileSandboxExtensions(fileNames, handles); > }); > +#endif > + > + if (!m_connection->isValid()) > + return; > + m_connection->send(Messages::NetworkProcessConnection::DidWriteBlobsToTemporaryFiles(requestIdentifier, fileNames), 0); How does this change relate to migrating IndexedDB? > Source/WebKit/NetworkProcess/NetworkProcess.cpp:117 > + , m_queue(WorkQueue::create("com.apple.WebKit.NetworkProcess")) This queue probably deserves a more specific data member name and queue name. Something to indicate that its purpose is to process storage tasks.
Sam Weinig
Comment 19 2018-09-09 15:22:55 PDT
(In reply to Geoffrey Garen from comment #17) > > > If I understand correctly, we want to merge the storage process into the > > > network process to eliminate the overhead of having a separate process for > > > storage access, and reduce the latency for service workers. > > > > Seems like an admirable goal. Do you have any measurements you can share > > that lead you to this decision? I am particularly interested in what kind of > > latency is being observed for service workers. > > For memory, Activity Monitor says the Storage process costs about 5MB. I usually see about the same. Do you have an idea of how much of that will now be added to the Networking process? > > For latency, Apple's internal launch time benchmarks measured a regression > when we first enabled Service Workers, which required the storage process on > startup. (We worked around that problem by deferring storage process startup > on systems that had never registered a service worker -- but the potential > regression remains, and service workers are becoming more popular.) What caused the regression here? Just the act of launching another service? Or was something waiting on it?
Geoffrey Garen
Comment 20 2018-09-10 09:50:50 PDT
> > For latency, Apple's internal launch time benchmarks measured a regression > > when we first enabled Service Workers, which required the storage process on > > startup. (We worked around that problem by deferring storage process startup > > on systems that had never registered a service worker -- but the potential > > regression remains, and service workers are becoming more popular.) > > What caused the regression here? Just the act of launching another service? > Or was something waiting on it? The logic of Service Workers delays the page load until you get a response from the storage process.
youenn fablet
Comment 21 2018-09-10 10:16:13 PDT
> The logic of Service Workers delays the page load until you get a response > from the storage process. I believe the main cost is storage process launch. Before answering any SW request, the storage process is loading from disk all the service worker registrations. This cost will keep happening in Network process. We could probably optimize it in the future if needs be.
Sihui Liu
Comment 22 2018-09-10 13:50:44 PDT
Comment on attachment 349198 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=349198&action=review >> Source/WebKit/ChangeLog:7 >> + > > A few good things to explain here: What's the motivation for this change? Do we expect an observable performance or behavior change? Is this a complete patch, or is it part of an ongoing series of patches? (I think I know the answers to these questions, but other WebKit contributors won't.) This patch uploaded for checking test results so I haven't added change logs. Will do! >> Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:157 >> +#endif > > This kind of change is good to explain in the ChangeLog entry for NetworkConnectionToWebProcess::didReceiveMessage. In particular, it's interesting to know if you just moved this code from StorageToWebProcessConnection::didReceiveMessage, or if you made any changes to it. Got it! >> Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:514 >> + m_connection->send(Messages::NetworkProcessConnection::DidWriteBlobsToTemporaryFiles(requestIdentifier, fileNames), 0); > > How does this change relate to migrating IndexedDB? This is for dumping indexedDB blobs to temporary files on disk. See: https://bugs.webkit.org/show_bug.cgi?id=156068. Originally Network Process writes temporary file and in completion handler, asks UI process to grant sandbox extension of those files to Storage Process. Here I change it to get and update sandbox extension in completion handler if ENABLE(SANDBOX_EXTENSIONS). >> Source/WebKit/NetworkProcess/NetworkProcess.cpp:117 >> + , m_queue(WorkQueue::create("com.apple.WebKit.NetworkProcess")) > > This queue probably deserves a more specific data member name and queue name. Something to indicate that its purpose is to process storage tasks. Will do.
Sihui Liu
Comment 23 2018-09-10 15:49:40 PDT
Geoffrey Garen
Comment 24 2018-09-11 10:16:10 PDT
Comment on attachment 349343 [details] Patch r=me
WebKit Commit Bot
Comment 25 2018-09-12 15:16:53 PDT
Comment on attachment 349343 [details] Patch Clearing flags on attachment: 349343 Committed r235954: <https://trac.webkit.org/changeset/235954>
WebKit Commit Bot
Comment 26 2018-09-12 15:16:55 PDT
All reviewed patches have been landed. Closing bug.
Radar WebKit Bug Importer
Comment 27 2018-09-12 15:17:29 PDT
Truitt Savell
Comment 28 2018-09-13 08:15:47 PDT
Looks like this patch https://trac.webkit.org/changeset/235954/webkit has caused two API failures, one crash and one failure. Log: https://build.webkit.org/builders/Apple%20Sierra%20Debug%20WK2%20%28Tests%29/builds/7976/steps/run-api-tests/logs/stdio the failure occurs on all Mac while the Crash only seems to effect Sierra.
Sihui Liu
Comment 29 2018-09-13 10:07:52 PDT
(In reply to Truitt Savell from comment #28) > Looks like this patch https://trac.webkit.org/changeset/235954/webkit > has caused two API failures, one crash and one failure. > > Log: > https://build.webkit.org/builders/Apple%20Sierra%20Debug%20WK2%20%28Tests%29/ > builds/7976/steps/run-api-tests/logs/stdio > > the failure occurs on all Mac while the Crash only seems to effect Sierra. It seems like WebKit.WKHTTPCookieStoreNonPersistent failure is caused by this patch, but ProcessSwap.BackWithoutSuspendedPage probably not.
Truitt Savell
Comment 30 2018-09-13 10:15:07 PDT
(In reply to Sihui Liu from comment #29) > > It seems like WebKit.WKHTTPCookieStoreNonPersistent failure is caused by > this patch, but ProcessSwap.BackWithoutSuspendedPage probably not. okay I will look into other revisions for that one
Sihui Liu
Comment 31 2018-09-13 10:24:24 PDT
(In reply to Truitt Savell from comment #30) > (In reply to Sihui Liu from comment #29) > > > > It seems like WebKit.WKHTTPCookieStoreNonPersistent failure is caused by > > this patch, but ProcessSwap.BackWithoutSuspendedPage probably not. > > okay I will look into other revisions for that one The test is added in https://trac.webkit.org/changeset/235952/webkit, so this might be interesting.
Matt Lewis
Comment 32 2018-09-13 13:38:17 PDT
This broke internal builds. See radar for more information.
Ryan Haddad
Comment 33 2018-09-13 15:50:47 PDT
Reverted r235954 for reason: Breaks the watchOS build. Committed r235995: <https://trac.webkit.org/changeset/235995>
David Kilzer (:ddkilzer)
Comment 34 2018-09-13 16:46:08 PDT
(In reply to Ryan Haddad from comment #33) > Reverted r235954 for reason: > > Breaks the watchOS build. > > Committed r235995: <https://trac.webkit.org/changeset/235995> Once you land the fix for Bug 189605, you should be able to re-land this.
Sihui Liu
Comment 35 2018-09-14 11:04:28 PDT
I am going to re-land this patch as: 1. it should not cause WebKit.WKHTTPCookieStoreNonPersistent failure on Sierra now: I added check sessionID.isEphemeral() in NetworkProcess::deleteWebsiteData and NetworkProcess::deleteWebsiteDataForOrigins, so the assertion NetworkProcess::idbServer() won't be hit. 2. it should not break the watch OS build after David's change https://trac.webkit.org/changeset/236007.
Sihui Liu
Comment 36 2018-09-14 11:05:00 PDT
Created attachment 349779 [details] Patch for landing
Sihui Liu
Comment 37 2018-09-14 11:07:14 PDT
Chris Dumez
Comment 38 2018-09-14 12:58:24 PDT
Comment on attachment 349782 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=349782&action=review r=me with comments > Source/WebKit/ChangeLog:25 > + I think this is 1 blank line too many? > Source/WebKit/ChangeLog:29 > + Why the blank line? > Source/WebKit/ChangeLog:124 > + process just asks for sandbox extension fot itself. Typo: fot. > Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:512 > + if (!m_connection->isValid()) This check should not be needed as IPC::Connection::send() already does this. > Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:38 > +#include <pal/SessionID.h> Can probably be forward-declared. > Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:245 > + // Messages handlers (Modern IDB) Period at the end. > Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:246 > + void establishIDBConnectionToServer(PAL::SessionID, uint64_t& serverConnectionIdentifier); We do not usually put methods in the middle of the data members, please move these methods above, even if you need a new #if ENABLE(INDEXED_DATABASE) block. > Source/WebKit/NetworkProcess/NetworkProcess.cpp:986 > +void NetworkProcess::ensurePathExists(const String& path) Does not seem like this method is needed. Why not use FileSystem::makeAllDirectories() directly? > Source/WebKit/NetworkProcess/NetworkProcess.cpp:1064 > + auto addResult = m_idbDatabasePaths.ensure(sessionID, [path = indexedDatabaseDirectory] { I do not see any benefit to using ensure() here, add() would suffice and likely be more efficient: auto addResult = m_idbDatabasePaths.add(sessionID, indexedDatabaseDirectory); > Source/WebKit/NetworkProcess/NetworkProcess.cpp:1077 > +void NetworkProcess::getSandboxExtensionsForBlobFiles(const Vector<String>& filenames, WTF::Function<void(SandboxExtension::HandleArray&&)>&& completionHandler) WTF:: is not needed. > Source/WebKit/NetworkProcess/NetworkProcess.h:169 > + WorkQueue& queue() { return m_storageTaskQueue.get(); } queue() is too generic a name here given that we're on the Network process. Maybe storageQueue() ? Also does this method need to be public? > Source/WebKit/NetworkProcess/NetworkProcess.h:170 > + void postStorageTask(CrossThreadTask&&); does this method need to be public? > Source/WebKit/NetworkProcess/NetworkProcess.h:173 > + WebCore::IDBServer::IDBServer& idbServer(PAL::SessionID); does this method need to be public? > Source/WebKit/NetworkProcess/NetworkProcess.h:176 > + void prepareForAccessToTemporaryFile(const String& path) final; does this method need to be public? > Source/WebKit/NetworkProcess/NetworkProcess.h:177 > + void accessToTemporaryFileComplete(const String& path) final; does this method need to be public? > Source/WebKit/NetworkProcess/NetworkProcess.h:181 > + void getSandboxExtensionsForBlobFiles(const Vector<String>& filenames, WTF::Function<void(SandboxExtension::HandleArray&&)>&& completionHandler); does this method need to be public? > Source/WebKit/NetworkProcess/NetworkProcess.h:182 > + void updateTemporaryFileSandboxExtensions(const Vector<String>& paths, SandboxExtension::HandleArray&); does this method need to be public? > Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1635 > + resolveDirectoriesIfNecessary(); This is already called at the beginning of the method, why is this needed again here? > Source/WebKit/WebProcess/Network/NetworkProcessConnection.cpp:113 > + auto idbConnection = m_webIDBConnectionsByIdentifier.get(decoder.destinationID()); can be: if (auto idbConnection = m_webIDBConnectionsByIdentifier.get(decoder.destinationID())) > Source/WebKit/WebProcess/Network/NetworkProcessConnection.h:68 > + WebIDBConnectionToServer* existingIDBConnectionToServerForIdentifier(uint64_t identifier) { return m_webIDBConnectionsByIdentifier.get(identifier); }; Can probably be const.
Sihui Liu
Comment 39 2018-09-16 23:31:36 PDT
Comment on attachment 349782 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=349782&action=review >> Source/WebKit/ChangeLog:25 >> + > > I think this is 1 blank line too many? Yes.. will remove it. >> Source/WebKit/ChangeLog:29 >> + > > Why the blank line? Make it more clear that I am change the make file... will remove it. >> Source/WebKit/ChangeLog:124 >> + process just asks for sandbox extension fot itself. > > Typo: fot. Fixed. >> Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:512 >> + if (!m_connection->isValid()) > > This check should not be needed as IPC::Connection::send() already does this. Okay. >> Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:38 >> +#include <pal/SessionID.h> > > Can probably be forward-declared. Will do. >> Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:245 >> + // Messages handlers (Modern IDB) > > Period at the end. Okay. >> Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:246 >> + void establishIDBConnectionToServer(PAL::SessionID, uint64_t& serverConnectionIdentifier); > > We do not usually put methods in the middle of the data members, please move these methods above, even if you need a new #if ENABLE(INDEXED_DATABASE) block. Okay. >> Source/WebKit/NetworkProcess/NetworkProcess.cpp:986 >> +void NetworkProcess::ensurePathExists(const String& path) > > Does not seem like this method is needed. Why not use FileSystem::makeAllDirectories() directly? Because createCrossThreadTask takes a void function? >> Source/WebKit/NetworkProcess/NetworkProcess.cpp:1064 >> + auto addResult = m_idbDatabasePaths.ensure(sessionID, [path = indexedDatabaseDirectory] { > > I do not see any benefit to using ensure() here, add() would suffice and likely be more efficient: > auto addResult = m_idbDatabasePaths.add(sessionID, indexedDatabaseDirectory); Okay. >> Source/WebKit/NetworkProcess/NetworkProcess.cpp:1077 >> +void NetworkProcess::getSandboxExtensionsForBlobFiles(const Vector<String>& filenames, WTF::Function<void(SandboxExtension::HandleArray&&)>&& completionHandler) > > WTF:: is not needed. Got it. >> Source/WebKit/NetworkProcess/NetworkProcess.h:169 >> + WorkQueue& queue() { return m_storageTaskQueue.get(); } > > queue() is too generic a name here given that we're on the Network process. Maybe storageQueue() ? > > Also does this method need to be public? No, and it seemed to be not used, so removed it. >> Source/WebKit/NetworkProcess/NetworkProcess.h:170 >> + void postStorageTask(CrossThreadTask&&); > > does this method need to be public? No, removed to private. >> Source/WebKit/NetworkProcess/NetworkProcess.h:173 >> + WebCore::IDBServer::IDBServer& idbServer(PAL::SessionID); > > does this method need to be public? Yes, called in WebIDBConnectionToClient::WebIDBConnectionToClient. >> Source/WebKit/NetworkProcess/NetworkProcess.h:176 >> + void prepareForAccessToTemporaryFile(const String& path) final; > > does this method need to be public? Yes, called in SQLiteIDBTransaction::moveBlobFilesIfNecessary. >> Source/WebKit/NetworkProcess/NetworkProcess.h:177 >> + void accessToTemporaryFileComplete(const String& path) final; > > does this method need to be public? Yes, called in SQLiteIDBTransaction::moveBlobFilesIfNecessary(). >> Source/WebKit/NetworkProcess/NetworkProcess.h:181 >> + void getSandboxExtensionsForBlobFiles(const Vector<String>& filenames, WTF::Function<void(SandboxExtension::HandleArray&&)>&& completionHandler); > > does this method need to be public? Yes, called in NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles. >> Source/WebKit/NetworkProcess/NetworkProcess.h:182 >> + void updateTemporaryFileSandboxExtensions(const Vector<String>& paths, SandboxExtension::HandleArray&); > > does this method need to be public? Yes, called in NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles. >> Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1635 >> + resolveDirectoriesIfNecessary(); > > This is already called at the beginning of the method, why is this needed again here? You mean at the beginning of WebsiteDataStore::parameters() in WebsiteDataStoreCocoa.mm? >> Source/WebKit/WebProcess/Network/NetworkProcessConnection.cpp:113 >> + auto idbConnection = m_webIDBConnectionsByIdentifier.get(decoder.destinationID()); > > can be: > if (auto idbConnection = m_webIDBConnectionsByIdentifier.get(decoder.destinationID())) Done. >> Source/WebKit/WebProcess/Network/NetworkProcessConnection.h:68 >> + WebIDBConnectionToServer* existingIDBConnectionToServerForIdentifier(uint64_t identifier) { return m_webIDBConnectionsByIdentifier.get(identifier); }; > > Can probably be const. Okay.
Sihui Liu
Comment 40 2018-09-16 23:34:09 PDT
Created attachment 349877 [details] Patch for landing
WebKit Commit Bot
Comment 41 2018-09-17 00:12:03 PDT
Comment on attachment 349877 [details] Patch for landing Clearing flags on attachment: 349877 Committed r236035: <https://trac.webkit.org/changeset/236035>
WebKit Commit Bot
Comment 42 2018-09-17 00:12:05 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.