diff options
author | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-09 23:18:05 +0000 |
---|---|---|
committer | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-09 23:18:05 +0000 |
commit | 7f860dd842e8e4aab9d2b16dc6c804e4fbc6235a (patch) | |
tree | fb391a628ec98acccc5d05d04bd98e9c8f4fa958 /chrome_frame/chrome_active_document.cc | |
parent | 0b48038ecfc7d12d3b6960be265fb93276eec77a (diff) | |
download | chromium_src-7f860dd842e8e4aab9d2b16dc6c804e4fbc6235a.zip chromium_src-7f860dd842e8e4aab9d2b16dc6c804e4fbc6235a.tar.gz chromium_src-7f860dd842e8e4aab9d2b16dc6c804e4fbc6235a.tar.bz2 |
Added support in Chromeframe full tab mode IE for setting zoom levels via View->Zoom. Currently we only support
Zoom in and zoom out as Chrome only supports these zoom levels.
Added an automation IPC message AutomationMsg_SetZoomLevel to set the zoom level in ChromeFrame.
The other change is in the active document in the handling of the attach external tab message. We now honor the
dimensions if any when we Launch the URL. This ensures that any windows opened outside chrome frame also honor these
dimensions.
Fixes bug http://code.google.com/p/chromium/issues/detail?id=36000
Bug=36000
Review URL: http://codereview.chromium.org/3064049
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@55494 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame/chrome_active_document.cc')
-rw-r--r-- | chrome_frame/chrome_active_document.cc | 74 |
1 files changed, 56 insertions, 18 deletions
diff --git a/chrome_frame/chrome_active_document.cc b/chrome_frame/chrome_active_document.cc index 0fac7fc..ee29183 100644 --- a/chrome_frame/chrome_active_document.cc +++ b/chrome_frame/chrome_active_document.cc @@ -33,6 +33,7 @@ #include "chrome/browser/tab_contents/tab_contents.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/navigation_types.h" +#include "chrome/common/page_zoom.h" #include "chrome/test/automation/browser_proxy.h" #include "chrome/test/automation/tab_proxy.h" #include "chrome_frame/bho.h" @@ -571,23 +572,7 @@ HRESULT ChromeActiveDocument::ActiveXDocActivate(LONG verb) { return AtlHresultFromLastError(); } } - - ScopedComPtr<IWebBrowser2> web_browser2; - DoQueryService(SID_SWebBrowserApp, m_spClientSite, - web_browser2.Receive()); - if (web_browser2) { - if (!dimensions_.IsEmpty()) { - web_browser2->put_Width(dimensions_.width()); - web_browser2->put_Height(dimensions_.height()); - web_browser2->put_Left(dimensions_.x()); - web_browser2->put_Top(dimensions_.y()); - web_browser2->put_MenuBar(VARIANT_FALSE); - web_browser2->put_ToolBar(VARIANT_FALSE); - - dimensions_.set_height(0); - dimensions_.set_width(0); - } - } + SetWindowDimensions(); } SetObjectRects(&position_rect, &clip_rect); } @@ -864,6 +849,36 @@ void ChromeActiveDocument::OnDisplayPrivacyInfo() { DoPrivacyDlg(m_hWnd, url_, this, TRUE); } +void ChromeActiveDocument::OnGetZoomRange(const GUID* cmd_group_guid, + DWORD command_id, + DWORD cmd_exec_opt, + VARIANT* in_args, + VARIANT* out_args) { + if (out_args != NULL) { + out_args->vt = VT_I4; + out_args->lVal = 0; + } +} + +void ChromeActiveDocument::OnSetZoomRange(const GUID* cmd_group_guid, + DWORD command_id, + DWORD cmd_exec_opt, + VARIANT* in_args, + VARIANT* out_args) { + const int kZoomIn = 125; + const int kZoomOut = 75; + + if (in_args && V_VT(in_args) == VT_I4 && IsValid()) { + if (in_args->lVal == kZoomIn) { + automation_client_->SetZoomLevel(PageZoom::ZOOM_IN); + } else if (in_args->lVal == kZoomOut) { + automation_client_->SetZoomLevel(PageZoom::ZOOM_OUT); + } else { + DLOG(WARNING) << "Unsupported zoom level:" << in_args->lVal; + } + } +} + void ChromeActiveDocument::OnOpenURL(int tab_handle, const GURL& url_to_open, const GURL& referrer, @@ -977,11 +992,12 @@ bool ChromeActiveDocument::LaunchUrl(const ChromeFrameUrl& cf_url, std::string utf8_url; WideToUTF8(url_, url_.Length(), &utf8_url); - DLOG(INFO) << "Url is " << url_; + DLOG(INFO) << "this:" << this << " url is:" << url_; if (cf_url.attach_to_external_tab()) { dimensions_ = cf_url.dimensions(); automation_client_->AttachExternalTab(cf_url.cookie()); + SetWindowDimensions(); } else if (!automation_client_->InitiateNavigation(utf8_url, referrer, is_privileged_)) { @@ -1222,3 +1238,25 @@ LRESULT ChromeActiveDocument::OnSetFocus(UINT message, WPARAM wparam, GiveFocusToChrome(false); return 0; } + +void ChromeActiveDocument::SetWindowDimensions() { + ScopedComPtr<IWebBrowser2> web_browser2; + DoQueryService(SID_SWebBrowserApp, m_spClientSite, + web_browser2.Receive()); + if (!web_browser2) + return; + DLOG(INFO) << "this:" << this; + DLOG(INFO) << "dimensions: width:" << dimensions_.width() + << "height:" << dimensions_.height(); + if (!dimensions_.IsEmpty()) { + web_browser2->put_Width(dimensions_.width()); + web_browser2->put_Height(dimensions_.height()); + web_browser2->put_Left(dimensions_.x()); + web_browser2->put_Top(dimensions_.y()); + web_browser2->put_MenuBar(VARIANT_FALSE); + web_browser2->put_ToolBar(VARIANT_FALSE); + + dimensions_.set_height(0); + dimensions_.set_width(0); + } +} |