Chromium Code Reviews| Index: chrome/browser/guest_view/guest_view_base.cc |
| diff --git a/chrome/browser/guest_view/guest_view_base.cc b/chrome/browser/guest_view/guest_view_base.cc |
| index 5e4ebab8e8250d3ab47342e678db1eac084268b5..91b7d4778eeafb756a8dad39a25ce2b7bae0a8e9 100644 |
| --- a/chrome/browser/guest_view/guest_view_base.cc |
| +++ b/chrome/browser/guest_view/guest_view_base.cc |
| @@ -93,6 +93,7 @@ GuestViewBase::GuestViewBase(content::BrowserContext* browser_context, |
| guest_instance_id_(guest_instance_id), |
| view_instance_id_(guestview::kInstanceIDNone), |
| initialized_(false), |
| + auto_size_enabled_(false), |
| weak_ptr_factory_(this) { |
| } |
| @@ -143,6 +144,33 @@ void GuestViewBase::InitWithWebContents( |
| DidInitialize(); |
| } |
| +void GuestViewBase::SetAutoSize(bool enabled, |
| + const gfx::Size& min_size, |
| + const gfx::Size& max_size) { |
| + min_auto_size_ = min_size; |
| + min_auto_size_.SetToMin(max_size); |
| + max_auto_size_ = max_size; |
| + max_auto_size_.SetToMax(min_size); |
| + |
| + enabled &= !!max_auto_size_.width() && !!max_auto_size_.height(); |
| + if (!enabled && !auto_size_enabled_) |
| + return; |
| + |
| + auto_size_enabled_ = enabled; |
| + |
| + if (!attached()) |
| + return; |
| + |
| + content::RenderViewHost* rvh = guest_web_contents()->GetRenderViewHost(); |
| + if (auto_size_enabled_) { |
| + rvh->EnableAutoResize(min_auto_size_, max_auto_size_); |
| + } else { |
| + rvh->DisableAutoResize(element_size_); |
| + guest_size_ = element_size_; |
| + GuestSizeChangedDueToAutoSize(guest_size_, element_size_); |
| + } |
| +} |
| + |
| // static |
| void GuestViewBase::RegisterGuestViewType( |
| const std::string& view_type, |
| @@ -268,10 +296,23 @@ void GuestViewBase::DidAttach() { |
| SendQueuedEvents(); |
| } |
| +void GuestViewBase::ElementSizeChanged(const gfx::Size& old_size, |
| + const gfx::Size& new_size) { |
| + element_size_ = new_size; |
| +} |
| + |
| int GuestViewBase::GetGuestInstanceID() const { |
| return guest_instance_id_; |
| } |
| +void GuestViewBase::GuestSizeChanged(const gfx::Size& old_size, |
| + const gfx::Size& new_size) { |
|
ericzeng
2014/08/01 18:55:09
indentation
Fady Samuel
2014/08/01 20:06:13
Done.
|
| + if (!auto_size_enabled_) |
| + return; |
| + guest_size_ = new_size; |
| + GuestSizeChangedDueToAutoSize(old_size, new_size); |
| +} |
| + |
| void GuestViewBase::SetOpener(GuestViewBase* guest) { |
| if (guest && guest->IsViewType(GetViewType())) { |
| opener_ = guest->AsWeakPtr(); |
| @@ -311,6 +352,16 @@ void GuestViewBase::DidStopLoading(content::RenderViewHost* render_view_host) { |
| DidStopLoading(); |
| } |
| +void GuestViewBase::RenderViewReady() { |
| + GuestReady(); |
| + content::RenderViewHost* rvh = guest_web_contents()->GetRenderViewHost(); |
| + if (auto_size_enabled_) { |
| + rvh->EnableAutoResize(min_auto_size_, max_auto_size_); |
| + } else { |
| + rvh->DisableAutoResize(element_size_); |
| + } |
| +} |
| + |
| void GuestViewBase::WebContentsDestroyed() { |
| GuestDestroyed(); |
| delete this; |