summaryrefslogtreecommitdiffstats
path: root/src/core/browser_main_parts_qt.h
diff options
context:
space:
mode:
authorPeter Varga <pvarga@inf.u-szeged.hu>2021-12-03 12:11:06 +0100
committerPeter Varga <pvarga@inf.u-szeged.hu>2021-12-09 09:07:31 +0100
commit8565ed8855fb65dd2db08f7cd901addce2a5ffe2 (patch)
tree85551c5f35be20ece78ffa3ef8dca9331ba66c06 /src/core/browser_main_parts_qt.h
parent4a06aad046a8599b5957d8de72ea7694ace78100 (diff)
Fix crash with disabled geolocation on macOS
QtWebEngine uses custom LocationProvider for geolocation. If geolocation is disabled, Chromium fallbacks to NetworkLocationProvider. NetworkLocationProvider uses GeolocationSystemPermissionManager and tThere is no nullptr check for the manager instance so QtWebEngine has to provide it. This fix implements a FakeSystemGeolocationPermissionManager what is meant to be used only on macOS if geolocation is disabled. LocationSystemPermissionStatus is always set to denied by the fake manager. Change-Id: I25d51c9ce8911b95ff69cc72bc6aae7023e7edbe Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit ca1074f7d0b91ccb9290acbfe51ecab54ad2efb9)
Diffstat (limited to 'src/core/browser_main_parts_qt.h')
-rw-r--r--src/core/browser_main_parts_qt.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/core/browser_main_parts_qt.h b/src/core/browser_main_parts_qt.h
index 9d0967612..5261207fc 100644
--- a/src/core/browser_main_parts_qt.h
+++ b/src/core/browser_main_parts_qt.h
@@ -50,6 +50,10 @@ namespace content {
class ServiceManagerConnection;
}
+namespace device {
+class GeolocationSystemPermissionManager;
+}
+
namespace performance_manager {
class PerformanceManager;
class PerformanceManagerRegistry;
@@ -72,10 +76,17 @@ public:
int PreCreateThreads() override;
void PostCreateThreads() override;
+#if defined(OS_MAC)
+ device::GeolocationSystemPermissionManager *GetLocationPermissionManager();
+#endif
+
private:
DISALLOW_COPY_AND_ASSIGN(BrowserMainPartsQt);
std::unique_ptr<performance_manager::PerformanceManager> performance_manager_;
std::unique_ptr<performance_manager::PerformanceManagerRegistry> performance_manager_registry_;
+#if defined(OS_MAC)
+ std::unique_ptr<device::GeolocationSystemPermissionManager> m_locationPermissionManager;
+#endif
};
} // namespace QtWebEngineCore