Skip to content

Commit 94f903d

Browse files
committed
mailto resource handler
1 parent 120b1b1 commit 94f903d

File tree

2 files changed

+17
-33
lines changed

2 files changed

+17
-33
lines changed

src/main/kotlin/org/digma/intellij/plugin/ui/jcef/JCefComponent.kt

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ import com.intellij.util.messages.MessageBusConnection
1313
import org.cef.CefApp
1414
import org.cef.browser.CefBrowser
1515
import org.cef.browser.CefMessageRouter
16-
import org.cef.callback.CefSchemeRegistrar
17-
import org.cef.handler.CefAppHandlerAdapter
1816
import org.cef.handler.CefDownloadHandler
1917
import org.cef.handler.CefLifeSpanHandlerAdapter
2018
import org.digma.intellij.plugin.analytics.AnalyticsService
@@ -53,19 +51,6 @@ private constructor(
5351
) : Disposable {
5452

5553

56-
companion object {
57-
init {
58-
//this is supposed to be a static initialization. the problem is that not all
59-
// our jcef apps use JCefComponent and that may cause issues.
60-
CefApp.addAppHandler(object : CefAppHandlerAdapter(arrayOf()) {
61-
override fun onRegisterCustomSchemes(registrar: CefSchemeRegistrar?) {
62-
registrar?.addCustomScheme("mailto", false, false, false, false, true, false, false)
63-
}
64-
})
65-
}
66-
}
67-
68-
6954
private val settingsChangeListener: SettingsChangeListener
7055
private val analyticsServiceConnectionEventMessageBusConnection: MessageBusConnection
7156
private val settingsListenerParentDisposable = Disposer.newDisposable()
@@ -327,7 +312,7 @@ private constructor(
327312
cefMessageRouter.addHandler(it, true)
328313
}
329314

330-
jbCefClient.addRequestHandler(CommonRequestHandler(), jbCefBrowser.cefBrowser)
315+
// jbCefClient.addRequestHandler(CommonRequestHandler(), jbCefBrowser.cefBrowser)
331316

332317
jbCefClient.cefClient.addMessageRouter(cefMessageRouter)
333318

@@ -339,7 +324,7 @@ private constructor(
339324
//we currently don't need MailtoSchemaHandlerFactory. we register a custom schema,
340325
// see above in companion object. MailtoSchemaHandlerFactory can be a replacement,
341326
// but then we need to handle the mailto in the plugin
342-
//registerMailtoSchemeHandler(MailtoSchemaHandlerFactory())
327+
registerMailtoSchemeHandler(MailtoSchemaHandlerFactory())
343328
}
344329
}
345330

src/main/kotlin/org/digma/intellij/plugin/ui/jcef/MailtoSchemaHandlerFactory.kt

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import org.cef.callback.CefCallback
66
import org.cef.callback.CefSchemeHandlerFactory
77
import org.cef.handler.CefResourceHandler
88
import org.cef.handler.CefResourceHandlerAdapter
9-
import org.cef.misc.IntRef
10-
import org.cef.misc.StringRef
119
import org.cef.network.CefRequest
12-
import org.cef.network.CefResponse
10+
import org.digma.intellij.plugin.errorreporting.ErrorReporter
11+
import java.awt.Desktop
12+
import java.net.URI
1313

1414
class MailtoSchemaHandlerFactory : CefSchemeHandlerFactory {
1515

@@ -26,19 +26,18 @@ class MailtoSchemaHandlerFactory : CefSchemeHandlerFactory {
2626
class MailtoResourceHandler : CefResourceHandlerAdapter() {
2727

2828
override fun processRequest(request: CefRequest?, callback: CefCallback?): Boolean {
29+
try {
30+
if (request != null) {
31+
if (request.url?.startsWith("mailto:") == true) {
32+
if (Desktop.isDesktopSupported()) {
33+
Desktop.getDesktop().mail(URI(request.url))
34+
}
35+
}
36+
}
37+
} catch (e: Exception) {
38+
ErrorReporter.getInstance().reportError("MailtoResourceHandler.processRequest", e)
39+
}
2940
callback?.Continue()
30-
return true
31-
}
32-
33-
override fun getResponseHeaders(response: CefResponse?, responseLength: IntRef?, redirectUrl: StringRef?) {
34-
super.getResponseHeaders(response, responseLength, redirectUrl)
35-
}
36-
37-
override fun readResponse(dataOut: ByteArray?, bytesToRead: Int, bytesRead: IntRef?, callback: CefCallback?): Boolean {
38-
return super.readResponse(dataOut, bytesToRead, bytesRead, callback)
39-
}
40-
41-
override fun cancel() {
42-
super.cancel()
41+
return false
4342
}
4443
}

0 commit comments

Comments
 (0)