Add CefZoomHandler interface to support custom zoom handling (issue #733).

git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@824 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt
2012-10-01 20:35:35 +00:00
parent a3ac7b446f
commit 7a0ff637f0
16 changed files with 493 additions and 2 deletions

View File

@@ -909,8 +909,21 @@ void BrowserWebViewDelegate::didCommitProvisionalLoad(
// Apply zoom settings only on top-level frames.
if (is_main_frame) {
// Restore the zoom value that we have for this URL, if any.
GURL url = frame->document().url();
double zoomLevel = 0.0;
ZoomMap::GetInstance()->get(frame->document().url(), zoomLevel);
bool didGetCustomZoom = false;
if (client.get()) {
CefRefPtr<CefZoomHandler> handler = client->GetZoomHandler();
if (handler.get()) {
double newZoomLevel = zoomLevel;
didGetCustomZoom =
handler->OnGetZoomLevel(browser_, url.spec(), newZoomLevel);
if (didGetCustomZoom)
zoomLevel = newZoomLevel;
}
}
if (!didGetCustomZoom)
ZoomMap::GetInstance()->get(url, zoomLevel);
frame->view()->setZoomLevel(false, zoomLevel);
browser_->set_zoom_level(zoomLevel);
}