}
[Fact]
- public void CreateBrowserProcessStartInfo_DefaultBrowserTest()
- {
- var startInfo = MyCommon.CreateBrowserProcessStartInfo(browserPathWithArgs: null, "https://example.com/");
- Assert.Equal("https://example.com/", startInfo.FileName);
- Assert.Equal("", startInfo.Arguments);
- Assert.True(startInfo.UseShellExecute);
- }
-
- [Fact]
public void CreateBrowserProcessStartInfo_BrowserPathTest()
{
var startInfo = MyCommon.CreateBrowserProcessStartInfo("C:\\browser.exe", "https://example.com/");
public static bool IsNullOrEmpty([NotNullWhen(false)] string? value)
=> string.IsNullOrEmpty(value);
- public static Task OpenInBrowserAsync(IWin32Window? owner, string url)
- => MyCommon.OpenInBrowserAsync(owner, SettingManager.Instance.Local.BrowserPath, url);
+ public static Task OpenInBrowserAsync(IWin32Window? owner, string urlStr)
+ => MyCommon.OpenInBrowserAsync(owner, SettingManager.Instance.Local.BrowserPath, urlStr);
- public static async Task OpenInBrowserAsync(IWin32Window? owner, string? browserPath, string url)
+ public static Task OpenInBrowserAsync(IWin32Window? owner, Uri uri)
+ => MyCommon.OpenInBrowserAsync(owner, SettingManager.Instance.Local.BrowserPath, uri);
+
+ public static async Task OpenInBrowserAsync(IWin32Window? owner, string? browserPath, string urlStr)
{
+ if (!Uri.TryCreate(urlStr, UriKind.Absolute, out var uri))
+ {
+ var message = string.Format(Properties.Resources.CannotOpenUriText, urlStr);
+ MessageBox.Show(owner, message, ApplicationSettings.ApplicationName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+ await MyCommon.OpenInBrowserAsync(owner, browserPath, uri);
+ }
+
+ public static async Task OpenInBrowserAsync(IWin32Window? owner, string? browserPath, Uri uri)
+ {
+ if (uri.Scheme != "http" && uri.Scheme != "https")
+ {
+ var message = string.Format(Properties.Resources.CannotOpenUriText, uri.OriginalString);
+ MessageBox.Show(owner, message, ApplicationSettings.ApplicationName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+
try
{
await Task.Run(() =>
}
/// <summary>
+ /// URLを開くことができません: {0} に類似しているローカライズされた文字列を検索します。
+ /// </summary>
+ internal static string CannotOpenUriText {
+ get {
+ return ResourceManager.GetString("CannotOpenUriText", resourceCulture);
+ }
+ }
+
+ /// <summary>
/// 画像ファイル(*.gif;*.jpg;*.jpeg;*.png)|*.gif;*.jpg;*.jpeg;*.png に類似しているローカライズされた文字列を検索します。
/// </summary>
internal static string ChangeIconToolStripMenuItem_ClickText1 {
<data name="ButtonUnFollow_ClickText1"><value> : Unfollow this user?</value></data>
<data name="ButtonUnFollow_ClickText2"><value>Confirm unfollowing</value></data>
<data name="CalcApiUsingText1"><value>Now getting API informations...</value></data>
+ <data name="CannotOpenUriText"><value>Cannot open URL: {0}</value></data>
<data name="ChangeIconToolStripMenuItem_ClickText1"><value>Images(*.gif;*.jpg;*.jpeg;*.png)|*.gif;*.jpg;*.jpeg;*.png</value></data>
<data name="ChangeIconToolStripMenuItem_ClickText2"><value>The icon file size is limited under 700kb.</value></data>
<data name="ChangeIconToolStripMenuItem_ClickText3"><value>Now changing icon...</value></data>
<data name="ButtonUnFollow_ClickText1"><value> をフォロー解除します。よろしいですか?</value></data>
<data name="ButtonUnFollow_ClickText2"><value>フォロー解除確認</value></data>
<data name="CalcApiUsingText1"><value>API情報取得中・・・</value></data>
+ <data name="CannotOpenUriText"><value>URLを開くことができません: {0}</value></data>
<data name="ChangeIconToolStripMenuItem_ClickText1"><value>画像ファイル(*.gif;*.jpg;*.jpeg;*.png)|*.gif;*.jpg;*.jpeg;*.png</value></data>
<data name="ChangeIconToolStripMenuItem_ClickText2"><value>サイズ700KBまでのアイコン画像ファイルを選択してください</value></data>
<data name="ChangeIconToolStripMenuItem_ClickText3"><value>アイコン設定中・・・</value></data>
if (dialog.ShowDialog(this) == DialogResult.Yes)
{
- await MyCommon.OpenInBrowserAsync(this, versionInfo.DownloadUri.OriginalString);
+ await MyCommon.OpenInBrowserAsync(this, versionInfo.DownloadUri);
}
else if (dialog.SkipButtonPressed)
{
if (e.Url.AbsoluteUri != "about:blank")
{
await this.ShowPostDetails(this.CurrentPost!); // 現在の発言を表示し直す (Navigated の段階ではキャンセルできない)
- await MyCommon.OpenInBrowserAsync(this, e.Url.OriginalString);
+ await MyCommon.OpenInBrowserAsync(this, e.Url);
}
}
var sourceUri = this.CurrentPost?.SourceUri;
if (sourceUri != null && e.Button == MouseButtons.Left)
{
- await MyCommon.OpenInBrowserAsync(this, sourceUri.AbsoluteUri);
+ await MyCommon.OpenInBrowserAsync(this, sourceUri);
}
}