diff --git a/Browser/CefSharpBrowser/CefOp/CustomRequestHandler.cs b/Browser/CefSharpBrowser/CefOp/CustomRequestHandler.cs
index 5b9044f88..7cfc28c57 100644
--- a/Browser/CefSharpBrowser/CefOp/CustomRequestHandler.cs
+++ b/Browser/CefSharpBrowser/CefOp/CustomRequestHandler.cs
@@ -31,6 +31,7 @@ protected override bool OnBeforeBrowse(IWebBrowser browserControl, IBrowser brow
{
return true;
}
+
return base.OnBeforeBrowse(browserControl, browser, frame, request, userGesture, isRedirect);
}
diff --git a/Browser/CefSharpBrowser/CefSharpViewModel.cs b/Browser/CefSharpBrowser/CefSharpViewModel.cs
index 4604e92b4..452017c43 100644
--- a/Browser/CefSharpBrowser/CefSharpViewModel.cs
+++ b/Browser/CefSharpBrowser/CefSharpViewModel.cs
@@ -3,6 +3,7 @@
using System.Diagnostics;
using System.IO;
using System.Linq;
+using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Forms.Integration;
@@ -133,6 +134,7 @@ protected override void InitializeAsync()
}
CefSharpSettings.SubprocessExitIfParentProcessClosed = true;
+ CefSharpSettings.RuntimeStyle = CefRuntimeStyle.Chrome;
Cef.Initialize(settings, false, (IBrowserProcessHandler?)null);
CustomRequestHandler requestHandler = new(Configuration);
diff --git a/Browser/CefSharpBrowser/ExtraBrowser/ExtraBrowserWindow.xaml b/Browser/CefSharpBrowser/ExtraBrowser/ExtraBrowserWindow.xaml
index f04fce7ee..c3643a608 100644
--- a/Browser/CefSharpBrowser/ExtraBrowser/ExtraBrowserWindow.xaml
+++ b/Browser/CefSharpBrowser/ExtraBrowser/ExtraBrowserWindow.xaml
@@ -42,6 +42,7 @@
+
+
Resources.Forward;
public string DmmPoints => Resources.DmmPoints;
public string AkashiList => Resources.AkashiList;
+ public string ExtensionManager => Resources.ExtensionManager;
+ public string AddExtension => Resources.AddExtension;
+ public string RemoveExtension => Resources.RemoveExtension;
public string WebView2NotFound => Resources.WebView2NotFound;
public string WebView2DownloadComplete => Resources.WebView2DownloadComplete;
diff --git a/Browser/Properties/Resources.en.resx b/Browser/Properties/Resources.en.resx
index 98a0f0b40..e94729a2e 100644
--- a/Browser/Properties/Resources.en.resx
+++ b/Browser/Properties/Resources.en.resx
@@ -331,4 +331,13 @@ Would you like to refresh?
Failed to apply browser font.
+
+ Extension manager
+
+
+ Add extension
+
+
+ Remove extension
+
\ No newline at end of file
diff --git a/Browser/Properties/Resources.resx b/Browser/Properties/Resources.resx
index 03a7c580c..a4434b528 100644
--- a/Browser/Properties/Resources.resx
+++ b/Browser/Properties/Resources.resx
@@ -1,17 +1,17 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
下(&B)
-
+
非表示(&I)
-
+
左(&L)
-
+
右(&R)
-
+
上(&T)
-
+
キャッシュを無視して更新(&C)
-
+
Go to Login Page
-
+
現在:
-
+
スタイルシートの適用に失敗しました。
-
+
ログインページへ移動します。
よろしいですか?
-
+
その他
-
+
現在: ぴったり
-
+
再読み込みします。
よろしいですか?
-
+
スクリーンショットの撮影に失敗しました。
-
+
クリップボードにコピー(&C)
-
+
ミュート
-
+
更新
-
+
スクリーンショット
-
+
ズーム
-
+
七四式電子観測儀 ブラウザ
-
+
var element = document.getElementById('welcome'); element.parentNode.removeChild(element);
-
+
var element = document.getElementById('page-popup'); element.parentNode.removeChild(element);
-
+
確認
-
+
キャッシュを無視して再読み込みします。
よろしいですか?
-
+
ツールメニューを表示
-
+
開発者ツールを開く
-
+
現在: ぴったり
-
+
キャッシュを削除
-
+
ブラウザの描画プロセスが
-
+
正常に終了しませんでした。
-
+
何者かによって殺害されました。
-
+
クラッシュしました。
-
+
謎の死を遂げました。
-
+
再読み込みすると復帰します。
-
+
本当にキャッシュをクリアするのですか?
-
+
ブラウザ再起動確認
-
+
スクリーンショット(&S)
-
+
直前のスクリーンショット(&P)
-
+
保存フォルダを開く(&O)
-
+
音量(&V)
-
+
ミュート(&M)
-
+
更新(&R)
-
+
ログインページへ移動(&L)
-
+
移動(&N)...
-
+
スタイルシートを適用する
-
+
配置(&A)
-
+
スクリーンショットをまだ撮影していません。
-
+
ブラウザのコンポーネントを読み込めませんでした。
Microsoft Visual C++ 2019 Redistributableが必要です。
ダウンロードページを開きますか?
(vc_redist.x64.exeをインストールしてください)
-
+
CefSharpロードエラー
-
+
DMMによるページ更新ダイアログの非表示に失敗しました。
-
+
艦これが読み込まれていないため、スクリーンショットを撮ることはできません。
-
+
スクリーンショットを {0} に保存しました。
-
+
スクリーンショットの保存に失敗しました。
-
+
スクリーンショットをクリップボードにコピーしました。
-
+
スクリーンショットのクリップボードへのコピーに失敗しました。
-
+
スクリーンショット {0} をクリップボードにコピーしました。
-
+
ズーム(&Z)
-
+
ファイル(_F)
-
+
バック
-
+
フォワード
-
+
DMMポイント
-
+
明石リスト
-
+
WebView2 が見つかりません。ダウンロードを開始します。
-
+
WebView2のダウンロードが完了しました。インストールを開始します。
-
+
WebView2のインストールが完了しました。
-
+
パーミッションがないため、vulkan の回避策を適用できない。七四式を管理者として実行すると、回避策が機能します。
-
+
古いバージョンのWebView2が検出されました。最新版をダウンロードします。
-
+
WebView2をインストールしようとしたときにエラーが発生しました。WebView2を手動でインストールしてください。
-
+
キャッシュの削除処理が終了しました。
-
+
進撃を断る設定のセルに進もうとしています。
再読み込みしますか?
-
+
ブラウザフォントの適用に失敗しました。
+
+
+ ??? (Extension manager)
+
+
+ ??? (Add extension)
+
+
+ ??? (Remove extension)
\ No newline at end of file
diff --git a/Browser/WebView2Browser/Extensions/ExtensionManagerWindow.xaml b/Browser/WebView2Browser/Extensions/ExtensionManagerWindow.xaml
new file mode 100644
index 000000000..2871dc431
--- /dev/null
+++ b/Browser/WebView2Browser/Extensions/ExtensionManagerWindow.xaml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Browser/WebView2Browser/Extensions/ExtensionManagerWindow.xaml.cs b/Browser/WebView2Browser/Extensions/ExtensionManagerWindow.xaml.cs
new file mode 100644
index 000000000..4cf0a105a
--- /dev/null
+++ b/Browser/WebView2Browser/Extensions/ExtensionManagerWindow.xaml.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Input;
+using CommunityToolkit.Mvvm.DependencyInjection;
+using Jot;
+using Microsoft.Web.WebView2.Core;
+using Microsoft.Web.WebView2.Wpf;
+
+namespace Browser.WebView2Browser.Extensions;
+
+public partial class ExtensionManagerWindow
+{
+ public Tracker Tracker { get; }
+
+ private WebView2 Browser { get; }
+ private ExtensionManagerViewModel ViewModel { get; }
+
+ public ExtensionManagerWindow(WebView2 browser)
+ {
+ Tracker = Ioc.Default.GetRequiredService();
+
+ Browser = browser;
+ ViewModel = new(Browser);
+ DataContext = ViewModel;
+
+ InitializeComponent();
+#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
+ ViewModel.InitializeAsync();
+#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
+
+ Loaded += (_, _) =>
+ {
+ StartJotTracking();
+ };
+ }
+
+ private void StartJotTracking()
+ {
+ Tracker.Track(this);
+ }
+}
diff --git a/Browser/WebView2Browser/Extensions/ExtensionViewModel.cs b/Browser/WebView2Browser/Extensions/ExtensionViewModel.cs
new file mode 100644
index 000000000..aa3264cec
--- /dev/null
+++ b/Browser/WebView2Browser/Extensions/ExtensionViewModel.cs
@@ -0,0 +1,76 @@
+using System;
+using System.Collections.ObjectModel;
+using System.Threading.Tasks;
+using System.Windows;
+using CommunityToolkit.Mvvm.DependencyInjection;
+using CommunityToolkit.Mvvm.Input;
+using Microsoft.Web.WebView2.Core;
+using Microsoft.Web.WebView2.Wpf;
+
+namespace Browser.WebView2Browser.Extensions;
+
+public partial class ExtensionManagerViewModel
+{
+ private WebView2 Browser { get; }
+ public FormBrowserTranslationViewModel FormBrowser { get; }
+
+ public ObservableCollection Extensions { get; } = [];
+
+ public ExtensionManagerViewModel(WebView2 browser)
+ {
+ Browser = browser;
+ FormBrowser = Ioc.Default.GetRequiredService();
+ }
+
+ public async Task InitializeAsync()
+ {
+ await Browser.EnsureCoreWebView2Async(WebView2ViewModel.Environment);
+
+ await RefreshList();
+ }
+
+ private async Task RefreshList()
+ {
+ Extensions.Clear();
+
+ foreach (CoreWebView2BrowserExtension extension in await Browser.CoreWebView2.Profile.GetBrowserExtensionsAsync())
+ {
+ Extensions.Add(extension);
+ }
+ }
+
+ [RelayCommand]
+ private async Task AddExtension()
+ {
+ System.Windows.Forms.FolderBrowserDialog folderBrowserDialog = new()
+ {
+ RootFolder = Environment.SpecialFolder.Desktop,
+ };
+
+ if (folderBrowserDialog.ShowDialog() is not System.Windows.Forms.DialogResult.OK) return;
+
+ try
+ {
+ await Browser.CoreWebView2.Profile.AddBrowserExtensionAsync(folderBrowserDialog.SelectedPath);
+ await RefreshList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, FormBrowser.Title, MessageBoxButton.OK, MessageBoxImage.Error);
+ }
+ }
+
+ [RelayCommand]
+ private async Task RemoveExtension(CoreWebView2BrowserExtension extension)
+ {
+ try
+ {
+ await extension.RemoveAsync();
+ await RefreshList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, FormBrowser.Title, MessageBoxButton.OK, MessageBoxImage.Error);
+ }
+ }
+}
diff --git a/Browser/WebView2Browser/ExtraBrowser/ExtraBrowserWindow.xaml b/Browser/WebView2Browser/ExtraBrowser/ExtraBrowserWindow.xaml
index d16b96822..fef9ded67 100644
--- a/Browser/WebView2Browser/ExtraBrowser/ExtraBrowserWindow.xaml
+++ b/Browser/WebView2Browser/ExtraBrowser/ExtraBrowserWindow.xaml
@@ -41,6 +41,7 @@
+
+