diff options
author | Peter Varga <pvarga@inf.u-szeged.hu> | 2016-07-27 09:14:52 +0200 |
---|---|---|
committer | Peter Varga <pvarga@inf.u-szeged.hu> | 2016-08-24 21:24:30 +0000 |
commit | 822763ddda98f04339df44641f9b0d0f72ff6466 (patch) | |
tree | b46d1bb211165acb3445ddc6bbb92d723726387f /src/core/web_contents_adapter.cpp | |
parent | 7da3fa4e73a37b0d63a98a4d476447071075935f (diff) |
Autocomplete view-source URL
User may miss the URL scheme (eg. http://) when type a view-source url
into the browser's location bar (eg. view-source:qt.io). This is not
handled by the Chromium thus will produce an empty view-source page.
The new autocompletion extends the incomplete view-source URL thus it
will provide valid URL if it is possible (eg. view-source:http://qt.io/)
Change-Id: I3edcd271cd0a971c9754e875db8f2a55a9a545de
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/core/web_contents_adapter.cpp')
-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); |