diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2017-02-14 18:19:17 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2017-03-02 10:38:15 +0000 |
commit | 741faecb20b2a951d4aa3c58e98eab1b33725267 (patch) | |
tree | 3f888030d4a82780dcf353abe8a1cee97e2a9c0b /src/core/web_engine_visited_links_manager.cpp | |
parent | eb1e41fa6106925c8794effcebd52843a56c6d31 (diff) |
Ensure the existence of the browser context's storage directory
For on-disk profiles, the browser context's storage directory must exist
before calling VisitedLinkMaster::Init().
This fixes the error message
[2844:2877:0213/183645:ERROR:visitedlink_master.cc(73)] Failed to open
file /home/username/.local/share/appname/QtWebEngine/Default/Visited
Links
Before, the directory was implicitly created by chromium's disk cache
backend initialization code which runs later than
VisitedLinkMaster::Init().
Change-Id: I3860a6874b8002292020b9ebaec22f8343ebd258
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/core/web_engine_visited_links_manager.cpp')
-rw-r--r-- | src/core/web_engine_visited_links_manager.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/core/web_engine_visited_links_manager.cpp b/src/core/web_engine_visited_links_manager.cpp index 0cf76d456..689c130e6 100644 --- a/src/core/web_engine_visited_links_manager.cpp +++ b/src/core/web_engine_visited_links_manager.cpp @@ -44,6 +44,7 @@ #include "content_browser_client_qt.h" #include "type_conversion.h" +#include <base/files/file_util.h> #include "components/visitedlink/browser/visitedlink_delegate.h" #include "components/visitedlink/browser/visitedlink_master.h" @@ -90,11 +91,28 @@ bool WebEngineVisitedLinksManager::containsUrl(const QUrl &url) const return m_visitedLinkMaster->IsVisited(toGurl(url)); } +static void ensureDirectoryExists(const base::FilePath &path) +{ + if (base::PathExists(path)) + return; + + base::File::Error error; + if (base::CreateDirectoryAndGetError(path, &error)) + return; + + std::string errorstr = base::File::ErrorToString(error); + qWarning("Cannot create directory %s. Error: %s.", + path.AsUTF8Unsafe().c_str(), + errorstr.c_str()); +} + WebEngineVisitedLinksManager::WebEngineVisitedLinksManager(BrowserContextAdapter *adapter) : m_delegate(new VisitedLinkDelegateQt) { Q_ASSERT(adapter && adapter->browserContext()); BrowserContextQt *browserContext = adapter->browserContext(); + if (adapter->persistVisitedLinks()) + ensureDirectoryExists(browserContext->GetPath()); m_visitedLinkMaster.reset(new visitedlink::VisitedLinkMaster(browserContext, m_delegate.data(), adapter->persistVisitedLinks())); m_visitedLinkMaster->Init(); } |