diff --git a/README.md b/README.md
index a8ca4c4d4..5fad0cc83 100644
--- a/README.md
+++ b/README.md
@@ -29,7 +29,7 @@ so please check out your distribution's package list to see if KeePassXC is avai
- Using website favicons as entry icons
- Merging of databases
- Automatic reload when the database changed on disk
-- Browser integration with KeePassXC-Browser using [native messaging](https://developer.chrome.com/extensions/nativeMessaging) for [Mozilla Firefox](https://addons.mozilla.org/en-US/firefox/addon/keepassxc-browser/) and [Google Chrome, Chromium, Vivaldi, or Brave](https://chrome.google.com/webstore/detail/keepassxc-browser/oboonakemofpalcgghocfoadofidjkkk)
+- Browser integration with KeePassXC-Browser using [native messaging](https://developer.chrome.com/extensions/nativeMessaging) for [Mozilla Firefox](https://addons.mozilla.org/en-US/firefox/addon/keepassxc-browser/) and [Google Chrome, Chromium, Vivaldi, or Brave](https://chrome.google.com/webstore/detail/keepassxc-browser/oboonakemofpalcgghocfoadofidjkkk) and [Microsoft Edge](https://microsoftedge.microsoft.com/addons/detail/pdffhmdngciaglkoonimfcmckehcpafo)
- Synchronize passwords using KeeShare. See [Using Sharing](./docs/QUICKSTART.md#using-sharing) for more details.
- Many bug fixes
diff --git a/src/browser/BrowserOptionDialog.cpp b/src/browser/BrowserOptionDialog.cpp
index 1af989e00..f12c42bb7 100644
--- a/src/browser/BrowserOptionDialog.cpp
+++ b/src/browser/BrowserOptionDialog.cpp
@@ -44,10 +44,11 @@ BrowserOptionDialog::BrowserOptionDialog(QWidget* parent)
m_ui->extensionLabel->setOpenExternalLinks(true);
m_ui->extensionLabel->setText(
- tr("KeePassXC-Browser is needed for the browser integration to work.
Download it for %1 and %2. %3")
+ tr("KeePassXC-Browser is needed for the browser integration to work.
Download it for %1 and %2 and %3. %4")
.arg("Firefox",
""
"Google Chrome / Chromium / Vivaldi / Brave",
+ "Microsoft Edge",
snapInstructions));
// clang-format on
@@ -123,6 +124,7 @@ void BrowserOptionDialog::loadSettings()
m_ui->chromeSupport->setChecked(settings->chromeSupport());
m_ui->chromiumSupport->setChecked(settings->chromiumSupport());
m_ui->firefoxSupport->setChecked(settings->firefoxSupport());
+ m_ui->edgeSupport->setChecked(settings->edgeSupport());
#ifndef Q_OS_WIN
m_ui->braveSupport->setChecked(settings->braveSupport());
m_ui->vivaldiSupport->setChecked(settings->vivaldiSupport());
@@ -132,6 +134,12 @@ void BrowserOptionDialog::loadSettings()
m_ui->snapWarningLabel->setVisible(false);
#endif
+// TODO: Enable when Linux version is released
+#ifdef Q_OS_LINUX
+ m_ui->edgeSupport->setChecked(false);
+ m_ui->edgeSupport->setEnabled(false);
+#endif
+
#if defined(KEEPASSXC_DIST_APPIMAGE)
m_ui->supportBrowserProxy->setChecked(true);
m_ui->supportBrowserProxy->setEnabled(false);
@@ -194,6 +202,7 @@ void BrowserOptionDialog::saveSettings()
settings->setChromeSupport(m_ui->chromeSupport->isChecked());
settings->setChromiumSupport(m_ui->chromiumSupport->isChecked());
settings->setFirefoxSupport(m_ui->firefoxSupport->isChecked());
+ settings->setEdgeSupport(m_ui->edgeSupport->isChecked());
#ifndef Q_OS_WIN
settings->setBraveSupport(m_ui->braveSupport->isChecked());
settings->setVivaldiSupport(m_ui->vivaldiSupport->isChecked());
diff --git a/src/browser/BrowserOptionDialog.ui b/src/browser/BrowserOptionDialog.ui
index 84fc5bdbf..1c00da148 100755
--- a/src/browser/BrowserOptionDialog.ui
+++ b/src/browser/BrowserOptionDialog.ui
@@ -167,6 +167,16 @@
+ -
+
+
+ &Edge
+
+
+ false
+
+
+
diff --git a/src/browser/BrowserSettings.cpp b/src/browser/BrowserSettings.cpp
index 046734268..9cb4e0735 100644
--- a/src/browser/BrowserSettings.cpp
+++ b/src/browser/BrowserSettings.cpp
@@ -280,6 +280,17 @@ void BrowserSettings::setTorBrowserSupport(bool enabled)
HostInstaller::SupportedBrowsers::TOR_BROWSER, enabled, supportBrowserProxy(), customProxyLocation());
}
+bool BrowserSettings::edgeSupport()
+{
+ return m_hostInstaller.checkIfInstalled(HostInstaller::SupportedBrowsers::EDGE);
+}
+
+void BrowserSettings::setEdgeSupport(bool enabled)
+{
+ m_hostInstaller.installBrowser(
+ HostInstaller::SupportedBrowsers::EDGE, enabled, supportBrowserProxy(), customProxyLocation());
+}
+
bool BrowserSettings::passwordUseNumbers()
{
return config()->get("generator/Numbers", PasswordGenerator::DefaultNumbers).toBool();
diff --git a/src/browser/BrowserSettings.h b/src/browser/BrowserSettings.h
index 0fa2359ee..395455cbc 100644
--- a/src/browser/BrowserSettings.h
+++ b/src/browser/BrowserSettings.h
@@ -80,6 +80,8 @@ public:
void setBraveSupport(bool enabled);
bool torBrowserSupport();
void setTorBrowserSupport(bool enabled);
+ bool edgeSupport();
+ void setEdgeSupport(bool enabled);
bool passwordUseNumbers();
void setPasswordUseNumbers(bool useNumbers);
diff --git a/src/browser/HostInstaller.cpp b/src/browser/HostInstaller.cpp
index 4928ba64e..f4ffae3b7 100644
--- a/src/browser/HostInstaller.cpp
+++ b/src/browser/HostInstaller.cpp
@@ -31,7 +31,7 @@
HostInstaller::HostInstaller()
: HOST_NAME("org.keepassxc.keepassxc_browser")
, ALLOWED_EXTENSIONS(QStringList() << "keepassxc-browser@keepassxc.org")
- , ALLOWED_ORIGINS(QStringList() << "chrome-extension://iopaggbpplllidnfmcghoonnokmjoicf/"
+ , ALLOWED_ORIGINS(QStringList() << "chrome-extension://pdffhmdngciaglkoonimfcmckehcpafo/"
<< "chrome-extension://oboonakemofpalcgghocfoadofidjkkk/")
#if defined(Q_OS_MACOS)
, TARGET_DIR_CHROME("/Library/Application Support/Google/Chrome/NativeMessagingHosts")
@@ -40,6 +40,7 @@ HostInstaller::HostInstaller()
, TARGET_DIR_VIVALDI("/Library/Application Support/Vivaldi/NativeMessagingHosts")
, TARGET_DIR_TOR_BROWSER("/Library/Application Support/TorBrowser-Data/Browser/Mozilla/NativeMessagingHosts")
, TARGET_DIR_BRAVE("/Library/Application Support/BraveSoftware/Brave-Browser/NativeMessagingHosts")
+ , TARGET_DIR_EDGE("/Library/Application Support/Microsoft Edge/NativeMessagingHosts")
#elif defined(Q_OS_WIN)
// clang-format off
, TARGET_DIR_CHROME("HKEY_CURRENT_USER\\Software\\Google\\Chrome\\NativeMessagingHosts\\org.keepassxc.keepassxc_browser")
@@ -49,6 +50,8 @@ HostInstaller::HostInstaller()
, TARGET_DIR_VIVALDI(TARGET_DIR_CHROME)
, TARGET_DIR_TOR_BROWSER(TARGET_DIR_FIREFOX)
, TARGET_DIR_BRAVE(TARGET_DIR_CHROME)
+ , TARGET_DIR_EDGE(
+ "HKEY_CURRENT_USER\\Software\\Microsoft\\Edge\\NativeMessagingHosts\\org.keepassxc.keepassxc_browser")
#else
, TARGET_DIR_CHROME("/.config/google-chrome/NativeMessagingHosts")
, TARGET_DIR_CHROMIUM("/.config/chromium/NativeMessagingHosts")
@@ -56,6 +59,7 @@ HostInstaller::HostInstaller()
, TARGET_DIR_VIVALDI("/.config/vivaldi/NativeMessagingHosts")
, TARGET_DIR_TOR_BROWSER("/.tor-browser/app/Browser/TorBrowser/Data/Browser/.mozilla/native-messaging-hosts")
, TARGET_DIR_BRAVE("/.config/BraveSoftware/Brave-Browser/NativeMessagingHosts")
+ , TARGET_DIR_EDGE("/.config/microsoftedge/NativeMessagingHosts")
#endif
{
}
@@ -139,8 +143,7 @@ void HostInstaller::installBrowser(SupportedBrowsers browser,
*/
void HostInstaller::updateBinaryPaths(const bool& proxy, const QString& location)
{
- // Where 6 is the number of entries in the SupportedBrowsers enum declared in HostInstaller.h
- for (int i = 0; i < 6; ++i) {
+ for (int i = 0; i <= SupportedBrowsers::EDGE; ++i) {
if (checkIfInstalled(static_cast(i))) {
installBrowser(static_cast(i), true, proxy, location);
}
@@ -168,6 +171,8 @@ QString HostInstaller::getTargetPath(SupportedBrowsers browser) const
return TARGET_DIR_TOR_BROWSER;
case SupportedBrowsers::BRAVE:
return TARGET_DIR_BRAVE;
+ case SupportedBrowsers::EDGE:
+ return TARGET_DIR_EDGE;
default:
return QString();
}
@@ -195,6 +200,8 @@ QString HostInstaller::getBrowserName(SupportedBrowsers browser) const
return "tor-browser";
case SupportedBrowsers::BRAVE:
return "brave";
+ case SupportedBrowsers::EDGE:
+ return "edge";
default:
return QString();
}
diff --git a/src/browser/HostInstaller.h b/src/browser/HostInstaller.h
index 154fe21a9..2136d1c34 100644
--- a/src/browser/HostInstaller.h
+++ b/src/browser/HostInstaller.h
@@ -35,7 +35,8 @@ public:
FIREFOX = 2,
VIVALDI = 3,
TOR_BROWSER = 4,
- BRAVE = 5
+ BRAVE = 5,
+ EDGE = 6
};
public:
@@ -68,6 +69,7 @@ private:
const QString TARGET_DIR_VIVALDI;
const QString TARGET_DIR_TOR_BROWSER;
const QString TARGET_DIR_BRAVE;
+ const QString TARGET_DIR_EDGE;
};
#endif // HOSTINSTALLER_H