mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-08 11:11:39 +09:00
Fix filename encoding for Android 10 webview #1251
This commit is contained in:
parent
49569b6139
commit
78e575f17b
2 changed files with 23 additions and 2 deletions
|
|
@ -228,6 +228,12 @@ class UA
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($result->os === 'Android' && preg_match('#^AndroidDownloadManager/([0-9])#', $ua, $matches))
|
||||||
|
{
|
||||||
|
$result->browser = 'Android';
|
||||||
|
$result->version = $matches[1];
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
if (preg_match('#Edge/([0-9]+\\.)#', $ua, $matches))
|
if (preg_match('#Edge/([0-9]+\\.)#', $ua, $matches))
|
||||||
{
|
{
|
||||||
$result->browser = 'Edge';
|
$result->browser = 'Edge';
|
||||||
|
|
@ -335,8 +341,14 @@ class UA
|
||||||
// Get the browser name and version.
|
// Get the browser name and version.
|
||||||
$browser = self::getBrowserInfo($ua);
|
$browser = self::getBrowserInfo($ua);
|
||||||
|
|
||||||
|
// Get the Android version.
|
||||||
|
if ($browser->os === 'Android')
|
||||||
|
{
|
||||||
|
$android_version = preg_match('/Android ([0-9]+)/', $ua, $matches) ? intval($matches[1]) : 0;
|
||||||
|
}
|
||||||
|
|
||||||
// Find the best format that this browser supports.
|
// Find the best format that this browser supports.
|
||||||
if ($browser->browser === 'Chrome' && $browser->version >= 11 & !$browser->is_webview)
|
if ($browser->browser === 'Chrome' && $browser->version >= 11 && !$browser->is_webview)
|
||||||
{
|
{
|
||||||
$output_format = 'rfc5987';
|
$output_format = 'rfc5987';
|
||||||
}
|
}
|
||||||
|
|
@ -362,7 +374,14 @@ class UA
|
||||||
}
|
}
|
||||||
elseif ($browser->browser === 'Android' || $browser->browser === 'Whale' || $browser->is_webview)
|
elseif ($browser->browser === 'Android' || $browser->browser === 'Whale' || $browser->is_webview)
|
||||||
{
|
{
|
||||||
$output_format = 'raw';
|
if ($android_version >= 10)
|
||||||
|
{
|
||||||
|
$output_format = 'rfc5987';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$output_format = 'raw';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
elseif ($browser->browser === 'Chrome' || $browser->browser === 'Safari')
|
elseif ($browser->browser === 'Chrome' || $browser->browser === 'Safari')
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -310,6 +310,8 @@ class UATest extends \Codeception\TestCase\Test
|
||||||
$this->assertEquals('filename*=UTF-8\'\'%ED%95%9C%EA%B8%80%20filename.jpg', Rhymix\Framework\UA::encodeFilenameForDownload('한글 filename.jpg', 'Edge/12.10240'));
|
$this->assertEquals('filename*=UTF-8\'\'%ED%95%9C%EA%B8%80%20filename.jpg', Rhymix\Framework\UA::encodeFilenameForDownload('한글 filename.jpg', 'Edge/12.10240'));
|
||||||
$this->assertEquals('filename*=UTF-8\'\'%ED%95%9C%EA%B8%80%20filename.jpg', Rhymix\Framework\UA::encodeFilenameForDownload('한글 filename.jpg', 'MSIE/7.0 Trident/7.0'));
|
$this->assertEquals('filename*=UTF-8\'\'%ED%95%9C%EA%B8%80%20filename.jpg', Rhymix\Framework\UA::encodeFilenameForDownload('한글 filename.jpg', 'MSIE/7.0 Trident/7.0'));
|
||||||
$this->assertEquals('filename*=UTF-8\'\'%ED%95%9C%EA%B8%80%20filename.jpg', Rhymix\Framework\UA::encodeFilenameForDownload('한글 filename.jpg', 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko'));
|
$this->assertEquals('filename*=UTF-8\'\'%ED%95%9C%EA%B8%80%20filename.jpg', Rhymix\Framework\UA::encodeFilenameForDownload('한글 filename.jpg', 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko'));
|
||||||
|
$this->assertEquals('filename*=UTF-8\'\'%ED%95%9C%EA%B8%80%20filename.jpg', Rhymix\Framework\UA::encodeFilenameForDownload('한글 filename.jpg', 'Mozilla/5.0 (Linux; Android 10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.92 Mobile Safari/537.36'));
|
||||||
|
$this->assertEquals('filename*=UTF-8\'\'%ED%95%9C%EA%B8%80%20filename.jpg', Rhymix\Framework\UA::encodeFilenameForDownload('한글 filename.jpg', 'AndroidDownloadManager/10 (Linux; U; Android 10)'));
|
||||||
$this->assertEquals('filename="%ED%95%9C%EA%B8%80%20filename.jpg"', Rhymix\Framework\UA::encodeFilenameForDownload('한글 filename.jpg', 'MSIE 8.0'));
|
$this->assertEquals('filename="%ED%95%9C%EA%B8%80%20filename.jpg"', Rhymix\Framework\UA::encodeFilenameForDownload('한글 filename.jpg', 'MSIE 8.0'));
|
||||||
$this->assertEquals('filename="%ED%95%9C%EA%B8%80%20filename.jpg"', Rhymix\Framework\UA::encodeFilenameForDownload('한글 filename.jpg', 'Unknown Browser'));
|
$this->assertEquals('filename="%ED%95%9C%EA%B8%80%20filename.jpg"', Rhymix\Framework\UA::encodeFilenameForDownload('한글 filename.jpg', 'Unknown Browser'));
|
||||||
$this->assertEquals('filename="한글 filename.jpg"', Rhymix\Framework\UA::encodeFilenameForDownload('한글 filename.jpg', 'Chrome/69.0.3497.128 Whale/1.0.0.0 Crosswalk/23.69.590.31 Mobile Safari/537.36 NAVER(inapp; search; 660; 10.7.2)'));
|
$this->assertEquals('filename="한글 filename.jpg"', Rhymix\Framework\UA::encodeFilenameForDownload('한글 filename.jpg', 'Chrome/69.0.3497.128 Whale/1.0.0.0 Crosswalk/23.69.590.31 Mobile Safari/537.36 NAVER(inapp; search; 660; 10.7.2)'));
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue