Bug 201655

Summary: Remove unnecessary abstractions around WebsiteDataStore
Product: WebKit Reporter: Alex Christensen <achristensen>
Component: New BugsAssignee: Alex Christensen <achristensen>
Status: RESOLVED FIXED    
Severity: Normal CC: annulen, berto, cdumez, cgarcia, eric.carlson, ews-watchlist, glenn, gustavo, gyuyoung.kim, jer.noble, philipj, rakuco, ryanhaddad, ryuan.choi, sergio, webkit-bot-watchers-bugzilla, webkit-bug-importer, youennf
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Updated patch with GLib API fixes
none
Patch
none
Patch
none
Patch none

Alex Christensen
Reported 2019-09-10 13:42:16 PDT
Remove unnecessary abstractions around WebsiteDataStore
Attachments
Patch (182.08 KB, patch)
2019-09-10 13:47 PDT, Alex Christensen
no flags
Patch (180.80 KB, patch)
2019-09-10 13:51 PDT, Alex Christensen
no flags
Patch (182.41 KB, patch)
2019-09-10 13:59 PDT, Alex Christensen
no flags
Patch (185.48 KB, patch)
2019-09-10 14:04 PDT, Alex Christensen
no flags
Patch (192.85 KB, patch)
2019-09-10 14:11 PDT, Alex Christensen
no flags
Patch (193.48 KB, patch)
2019-09-10 14:14 PDT, Alex Christensen
no flags
Patch (199.92 KB, patch)
2019-09-10 14:23 PDT, Alex Christensen
no flags
Patch (200.76 KB, patch)
2019-09-10 14:40 PDT, Alex Christensen
no flags
Patch (204.26 KB, patch)
2019-09-10 15:40 PDT, Alex Christensen
no flags
Patch (204.94 KB, patch)
2019-09-10 16:31 PDT, Alex Christensen
no flags
Patch (207.05 KB, patch)
2019-09-10 19:29 PDT, Alex Christensen
no flags
Patch (207.57 KB, patch)
2019-09-10 21:24 PDT, Alex Christensen
no flags
Updated patch with GLib API fixes (202.47 KB, patch)
2019-09-11 03:41 PDT, Carlos Garcia Campos
no flags
Patch (161.71 KB, patch)
2019-09-20 16:12 PDT, Alex Christensen
no flags
Patch (164.04 KB, patch)
2019-09-20 16:20 PDT, Alex Christensen
no flags
Patch (165.45 KB, patch)
2019-09-20 16:35 PDT, Alex Christensen
no flags
Alex Christensen
Comment 1 2019-09-10 13:47:19 PDT
Alex Christensen
Comment 2 2019-09-10 13:51:46 PDT
EWS Watchlist
Comment 3 2019-09-10 13:52:20 PDT
Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API
Alex Christensen
Comment 4 2019-09-10 13:59:48 PDT
Alex Christensen
Comment 5 2019-09-10 14:04:35 PDT
Alex Christensen
Comment 6 2019-09-10 14:11:05 PDT
Alex Christensen
Comment 7 2019-09-10 14:14:14 PDT
Alex Christensen
Comment 8 2019-09-10 14:23:45 PDT
Alex Christensen
Comment 9 2019-09-10 14:40:03 PDT
Alex Christensen
Comment 10 2019-09-10 15:40:49 PDT
Alex Christensen
Comment 11 2019-09-10 15:42:48 PDT
Comment on attachment 378501 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=378501&action=review > Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:-314 > -static inline Ref<WebsiteDataStoreConfiguration> websiteDataStoreConfigurationForWebProcessPoolConfiguration(const API::ProcessPoolConfiguration& processPoolconfigurarion) GTK developers: I think this will not affect anything because the defaults should come from the WebsiteDataStore, but it would probably be worth double checking. > Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:1450 > -void webkit_web_context_set_disk_cache_directory(WebKitWebContext* context, const char* directory) > +void webkit_web_context_set_disk_cache_directory(WebKitWebContext*, const char*) Heads up GTK developers: I'm cutting off the functionality of this function which has been deprecated for many years, anticipating this move.
Alex Christensen
Comment 12 2019-09-10 16:31:07 PDT
Comment on attachment 378501 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=378501&action=review > Source/WebKit/UIProcess/WebProcessPool.cpp:-888 > - if (parameters.applicationCacheFlatFileSubdirectoryName.isEmpty()) This needs a default on the WebsiteDataStoreConfiguration to maintain existing behavior and continue to pass the appcache video tests. Uploading what I believe will be the last patch needed...
Alex Christensen
Comment 13 2019-09-10 16:31:55 PDT
Alex Christensen
Comment 14 2019-09-10 19:29:10 PDT
Alex Christensen
Comment 15 2019-09-10 21:24:07 PDT
youenn fablet
Comment 16 2019-09-11 03:14:55 PDT
Comment on attachment 378537 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=378537&action=review > Source/WebKit/UIProcess/WebProcessPool.cpp:547 > + if (!m_websiteDataStore && WebsiteDataStore::defaultDataStoreExists()) { This check seems strange given we have above an if(m_websiteDataStore) check. Also it is IDB-support conditional. Should we move that check at the beginning of WebProcessPool::ensureNetworkProcess?
Carlos Garcia Campos
Comment 17 2019-09-11 03:41:50 PDT
Created attachment 378554 [details] Updated patch with GLib API fixes Updated patch to fix GTK and WPE ports.
Chris Dumez
Comment 18 2019-09-11 08:31:47 PDT
Comment on attachment 378554 [details] Updated patch with GLib API fixes View in context: https://bugs.webkit.org/attachment.cgi?id=378554&action=review r=me > Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:106 > + explicit WebsiteDataStore(Ref<WebsiteDataStoreConfiguration>&&, PAL::SessionID); explicit is not needed. > Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:305 > + enum ShouldCreateDirectory { CreateDirectory, DontCreateDirectory }; Could you please use an enum class ? E.g. enum class ShouldCreateDirectory { No, Yes };
Alex Christensen
Comment 19 2019-09-11 09:37:59 PDT
(In reply to youenn fablet from comment #16) > Comment on attachment 378537 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=378537&action=review > > > Source/WebKit/UIProcess/WebProcessPool.cpp:547 > > + if (!m_websiteDataStore && WebsiteDataStore::defaultDataStoreExists()) { > > This check seems strange given we have above an if(m_websiteDataStore) check. > Also it is IDB-support conditional. > Should we move that check at the beginning of > WebProcessPool::ensureNetworkProcess? All the code that uses m_websiteDataStore will be seriously refactored soon. http://trac.webkit.org/r249768
Radar WebKit Bug Importer
Comment 20 2019-09-11 09:38:23 PDT
Ryan Haddad
Comment 21 2019-09-11 14:27:24 PDT
The following API tests are failing an assertion after this change: TestWebKitAPI.Coding.WKWebsiteDataStore_Default TestWebKitAPI.Coding.WKWebsiteDataStore_NonPersistent TestWebKitAPI.Coding.WKWebViewConfiguration TestWebKitAPI.Coding.WKWebView ASSERTION FAILED: dataStores().contains(this) /Volumes/Data/slave/mojave-debug/build/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm(220) : void WebKit::WebsiteDataStore::platformDestroy() 1 0x1094131e9 WTFCrash 2 0x114b2539b WTFCrashWithInfo(int, char const*, char const*, int) 3 0x11580ae8b WebKit::WebsiteDataStore::platformDestroy() 4 0x115ac30b8 WebKit::WebsiteDataStore::~WebsiteDataStore() 5 0x115ac3595 WebKit::WebsiteDataStore::~WebsiteDataStore() 6 0x1154161ce -[WKWebsiteDataStore dealloc] 7 0x11541636a -[WKWebsiteDataStore initWithCoder:] 8 0x7fff39ac7417 _decodeObjectBinary 9 0x7fff39ac691e _decodeObject 10 0x7fff39ac681a -[NSKeyedUnarchiver decodeObjectForKey:] 11 0x7fff39ac6687 -[NSKeyedUnarchiver decodeObjectOfClasses:forKey:] 12 0x7fff39ac62a2 -[NSCoder(Exceptions) __tryDecodeObjectForKey:error:decodeBlock:] 13 0x7fff39ac625b -[NSCoder decodeTopLevelObjectOfClasses:forKey:error:] 14 0x7fff39ac517a +[NSKeyedUnarchiver unarchivedObjectOfClasses:fromData:error:] 15 0x10759f36b unarchivedObjectOfClassesFromData(NSSet<objc_class*>*, NSData*) 16 0x1076238bd WTF::RetainPtr<WKWebsiteDataStore> encodeAndDecode<WKWebsiteDataStore>(WKWebsiteDataStore*) 17 0x1076236b6 Coding_WKWebsiteDataStore_Default_Test::TestBody() 18 0x107dad45e void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) 19 0x107d7ab5b void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) 20 0x107d7aa86 testing::Test::Run() 21 0x107d7bc95 testing::TestInfo::Run() 22 0x107d7cb7f testing::TestCase::Run() 23 0x107d88834 testing::internal::UnitTestImpl::RunAllTests() 24 0x107db15ee bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) 25 0x107d8830b bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) 26 0x107d881e0 testing::UnitTest::Run() 27 0x107b99011 RUN_ALL_TESTS() 28 0x107b98fa1 TestWebKitAPI::TestsController::run(int, char**) 29 0x107d4572e main 30 0x7fff637b53d5 start 31 0x2
Ryan Haddad
Comment 22 2019-09-11 14:28:24 PDT
Also, the perf bot has 201 tests failing with this in the output: 2019-09-11 12:42:29.146 com.apple.WebKit.Networking.Development[36125:12688643] NetworkStorageDB:_openDBReadConnections: failed to open read connection to DB @ /Users/buildbot/Library/Caches/com.apple.WebKit.Networking/Cache.db. Error=14. Cause=unable to open database file 2019-09-11 12:42:29.146 com.apple.WebKit.Networking.Development[36125:12688643] CacheRead: unable to open cache files in /Users/buildbot/Library/Caches/com.apple.WebKit.Networking 2019-09-11 12:42:29.147 com.apple.WebKit.Networking.Development[36125:12688643] Failed to obtain sandbox extension for path=/Users/buildbot/Library/Caches/com.apple.WebKit.Networking. Errno:1 https://build.webkit.org/builders/Apple%20High%20Sierra%20Release%20WK2%20%28Perf%29/builds/2400
Ryan Haddad
Comment 23 2019-09-11 14:44:01 PDT
Reverted r249768 for reason: Caused 4 API tests to assert, perf test failures, and layout test crashes under ASan Committed r249778: <https://trac.webkit.org/changeset/249778>
Ryan Haddad
Comment 24 2019-09-11 14:44:28 PDT
(In reply to Ryan Haddad from comment #23) > Reverted r249768 for reason: > > Caused 4 API tests to assert, perf test failures, and layout test crashes > under ASan > > Committed r249778: <https://trac.webkit.org/changeset/249778> ASan crash details in radar.
Alex Christensen
Comment 25 2019-09-20 16:12:16 PDT
Alex Christensen
Comment 26 2019-09-20 16:20:44 PDT
Alex Christensen
Comment 27 2019-09-20 16:35:01 PDT
Alex Christensen
Comment 28 2019-09-20 17:13:40 PDT
Note You need to log in before you can comment on or make changes to this bug.