| Index: content/browser/media/capture/web_contents_tracker.cc
|
| diff --git a/content/browser/media/capture/web_contents_tracker.cc b/content/browser/media/capture/web_contents_tracker.cc
|
| index a9e161f1ce3fcf2ce299734fb103d805ea574eb5..c529b2233256eb92d56ee952c4852256bd16d7f0 100644
|
| --- a/content/browser/media/capture/web_contents_tracker.cc
|
| +++ b/content/browser/media/capture/web_contents_tracker.cc
|
| @@ -44,6 +44,7 @@ void WebContentsTracker::Stop() {
|
| DCHECK(task_runner_->BelongsToCurrentThread());
|
|
|
| callback_.Reset();
|
| + resize_callback_.Reset();
|
|
|
| if (BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| WebContentsObserver::Observe(NULL);
|
| @@ -78,6 +79,12 @@ RenderWidgetHost* WebContentsTracker::GetTargetRenderWidgetHost() const {
|
| return rwh;
|
| }
|
|
|
| +void WebContentsTracker::SetResizeChangeCallback(
|
| + const ChangeCallback& callback) {
|
| + DCHECK(!task_runner_.get() || task_runner_->BelongsToCurrentThread());
|
| + resize_callback_ = callback;
|
| +}
|
| +
|
| void WebContentsTracker::OnPossibleTargetChange(bool force_callback_run) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
|
|
| @@ -102,6 +109,15 @@ void WebContentsTracker::MaybeDoCallback(RenderWidgetHost* rwh) {
|
|
|
| if (!callback_.is_null())
|
| callback_.Run(rwh);
|
| + if (rwh)
|
| + MaybeDoResizeCallback(rwh);
|
| +}
|
| +
|
| +void WebContentsTracker::MaybeDoResizeCallback(RenderWidgetHost* rwh) {
|
| + DCHECK(task_runner_->BelongsToCurrentThread());
|
| +
|
| + if (!resize_callback_.is_null())
|
| + resize_callback_.Run(rwh);
|
| }
|
|
|
| void WebContentsTracker::StartObservingWebContents(int render_process_id,
|
| @@ -128,6 +144,23 @@ void WebContentsTracker::RenderFrameHostChanged(RenderFrameHost* old_host,
|
| OnPossibleTargetChange(false);
|
| }
|
|
|
| +void WebContentsTracker::MainFrameWasResized(bool width_changed) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| +
|
| + RenderWidgetHost* const rwh = GetTargetRenderWidgetHost();
|
| + if (!rwh)
|
| + return;
|
| +
|
| + if (task_runner_->BelongsToCurrentThread()) {
|
| + MaybeDoResizeCallback(rwh);
|
| + } else {
|
| + task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&WebContentsTracker::MaybeDoResizeCallback, this, rwh));
|
| + }
|
| +
|
| +}
|
| +
|
| void WebContentsTracker::WebContentsDestroyed() {
|
| Observe(NULL);
|
| OnPossibleTargetChange(false);
|
|
|