Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(230)

Unified Diff: content/browser/host_zoom_map_impl.cc

Issue 678963003: Allow zooming error pages. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/host_zoom_map_impl.cc
diff --git a/content/browser/host_zoom_map_impl.cc b/content/browser/host_zoom_map_impl.cc
index 9c595ef0f24f17687add77b175740d964cc626d0..2ab83ed79fe6258e8ac1fa89fe23101ce5193fff 100644
--- a/content/browser/host_zoom_map_impl.cc
+++ b/content/browser/host_zoom_map_impl.cc
@@ -21,6 +21,7 @@
#include "content/public/browser/notification_types.h"
#include "content/public/browser/resource_context.h"
#include "content/public/common/page_zoom.h"
+#include "content/public/common/url_constants.h"
#include "net/base/net_util.h"
namespace content {
@@ -43,11 +44,21 @@ std::string GetHostFromProcessView(int render_process_id, int render_view_id) {
if (!entry)
return std::string();
- return net::GetHostOrSpecFromURL(entry->GetURL());
+ return net::GetHostOrSpecFromURL(HostZoomMap::GetURLFromEntry(entry));
}
} // namespace
+GURL HostZoomMap::GetURLFromEntry(const NavigationEntry* entry) {
Charlie Reis 2014/10/28 16:36:21 I'm confused why we're defining HostZoomMap method
wjmaclean 2014/10/28 17:37:04 I think the idea was to create convenience functio
Charlie Reis 2014/10/28 19:09:44 Thanks. I realized there's precedent for this in
+ switch (entry->GetPageType()) {
+ case PAGE_TYPE_ERROR:
+ return GURL(kUnreachableWebDataURL);
+ // In future, give interstitial pages special treatment as well.
Charlie Reis 2014/10/28 16:36:21 nit: In future -> TODO(wjmaclean):
wjmaclean 2014/10/28 17:37:04 Done.
+ default:
+ return entry->GetURL();
+ }
+}
+
HostZoomMap* HostZoomMap::GetDefaultForBrowserContext(BrowserContext* context) {
HostZoomMapImpl* rv = static_cast<HostZoomMapImpl*>(
context->GetUserData(kHostZoomMapKeyName));
@@ -76,6 +87,14 @@ void HostZoomMap::SetZoomLevel(const WebContents* web_contents, double level) {
*static_cast<const WebContentsImpl*>(web_contents), level);
}
+void HostZoomMap::SendErrorPageZoomLevelRefresh(
+ const WebContents* web_contents) {
+ HostZoomMapImpl* host_zoom_map =
+ static_cast<HostZoomMapImpl*>(HostZoomMap::GetDefaultForBrowserContext(
+ web_contents->GetBrowserContext()));
+ host_zoom_map->SendErrorPageZoomLevelRefresh();
+}
+
HostZoomMapImpl::HostZoomMapImpl()
: default_zoom_level_(0.0) {
registrar_.Add(
@@ -253,7 +272,7 @@ double HostZoomMapImpl::GetZoomLevelForWebContents(
// It is possible for a WebContent's zoom level to be queried before
// a navigation has occurred.
if (entry)
- url = entry->GetURL();
+ url = GetURLFromEntry(entry);
return GetZoomLevelForHostAndScheme(url.scheme(),
net::GetHostOrSpecFromURL(url));
}
@@ -277,7 +296,7 @@ void HostZoomMapImpl::SetZoomLevelForWebContents(
if (!entry)
return;
- GURL url = entry->GetURL();
+ GURL url = GetURLFromEntry(entry);
SetZoomLevelForHost(net::GetHostOrSpecFromURL(url), level);
}
}
@@ -384,6 +403,16 @@ void HostZoomMapImpl::SendZoomLevelChange(const std::string& scheme,
}
}
+void HostZoomMapImpl::SendErrorPageZoomLevelRefresh() {
+ GURL error_url(kUnreachableWebDataURL);
+ std::string host = net::GetHostOrSpecFromURL(error_url);
+ double error_page_zoom_level = GetZoomLevelForHost(host);
+ if (error_page_zoom_level == default_zoom_level_)
Charlie Reis 2014/10/28 16:36:21 What happens if the renderer had a different zoom
wjmaclean 2014/10/28 17:37:04 Good catch ... we should probably always just send
+ return;
+
+ SendZoomLevelChange("", host, error_page_zoom_level);
Bernhard Bauer 2014/10/28 14:55:22 Using an empty std::string() constructor instead o
wjmaclean 2014/10/28 17:37:04 I wondered if that might be better; I'll add it in
+}
+
HostZoomMapImpl::~HostZoomMapImpl() {
}

Powered by Google App Engine
This is Rietveld 408576698