diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/web_contents_adapter.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index ea11d5e9c..3ab6ac951 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -518,7 +518,19 @@ void WebContentsAdapter::load(const QUrl &url) Q_UNUSED(guard); Q_D(WebContentsAdapter); - content::NavigationController::LoadURLParams params(toGurl(url)); + GURL gurl = toGurl(url); + + // Add URL scheme if missing from view-source URL. + if (url.scheme() == content::kViewSourceScheme) { + QUrl pageUrl = QUrl(url.toString().remove(0, strlen(content::kViewSourceScheme) + 1)); + if (pageUrl.scheme().isEmpty()) { + QUrl extendedUrl = QUrl::fromUserInput(pageUrl.toString()); + extendedUrl = QUrl(QString("%1:%2").arg(content::kViewSourceScheme, extendedUrl.toString())); + gurl = toGurl(extendedUrl); + } + } + + content::NavigationController::LoadURLParams params(gurl); params.transition_type = ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR); params.override_user_agent = content::NavigationController::UA_OVERRIDE_TRUE; d->webContents->GetController().LoadURLWithParams(params); |