Bug 1358805 - part 5: Update the dynamic toolbar animator to gracefully handle toolbar snapshot generation failure r=kats

MozReview-Commit-ID: B3t6l5ZqhC5
This commit is contained in:
Randall Barker 2017-04-25 12:55:53 -07:00
Родитель b1e89ec4b1
Коммит c82d528d56
3 изменённых файлов: 19 добавлений и 0 удалений

Просмотреть файл

@ -278,6 +278,10 @@ AndroidDynamicToolbarAnimator::ToolbarAnimatorMessageFromUI(int32_t aMessage)
case REQUEST_HIDE_TOOLBAR_ANIMATED:
NotifyControllerPendingAnimation(MOVE_TOOLBAR_UP, eAnimate);
break;
case TOOLBAR_SNAPSHOT_FAILED:
mToolbarState = eToolbarVisible;
NotifyControllerSnapshotFailed();
break;
default:
break;
}
@ -893,5 +897,18 @@ AndroidDynamicToolbarAnimator::GetFixedLayerMarginsBottom()
return mCompositorToolbarHeight - (mCompositorSurfaceHeight - mCompositorCompositionSize.height);
}
void
AndroidDynamicToolbarAnimator::NotifyControllerSnapshotFailed()
{
if (!APZThreadUtils::IsControllerThread()) {
APZThreadUtils::RunOnControllerThread(NewRunnableMethod(this, &AndroidDynamicToolbarAnimator::NotifyControllerSnapshotFailed));
return;
}
mControllerToolbarHeight = 0;
mControllerState = eNothingPending;
UpdateCompositorToolbarHeight(mControllerToolbarHeight);
}
} // namespace layers
} // namespace mozilla

Просмотреть файл

@ -149,6 +149,7 @@ protected:
void ShowToolbarIfNotVisible(StaticToolbarState aCurrentToolbarState);
void TranslateTouchEvent(MultiTouchInput& aTouchEvent);
ScreenIntCoord GetFixedLayerMarginsBottom();
void NotifyControllerSnapshotFailed();
// Read only Compositor and Controller threads after Initialize()
uint64_t mRootLayerTreeId;

Просмотреть файл

@ -208,6 +208,7 @@ public class LayerView extends FrameLayout {
// Send updated toolbar image to compositor.
Bitmap bm = mToolbarAnimator.getBitmapOfToolbarChrome();
if (bm == null) {
postCompositorMessage(TOOLBAR_SNAPSHOT_FAILED);
break;
}
final int width = bm.getWidth();