void APZCCallbackHandler::RequestContentRepaint(const FrameMetrics& aFrameMetrics) { MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(aFrameMetrics.GetScrollId() != FrameMetrics::NULL_SCROLL_ID); if (aFrameMetrics.GetIsRoot()) { nsIDOMWindowUtils* utils = GetDOMWindowUtils(); if (utils && APZCCallbackHelper::HasValidPresShellId(utils, aFrameMetrics)) { FrameMetrics metrics = aFrameMetrics; APZCCallbackHelper::UpdateRootFrame(utils, metrics); } } else { // aFrameMetrics.mIsRoot is false, so we are trying to update a subframe. // This requires special handling. nsCOMPtr<nsIContent> content = nsLayoutUtils::FindContentFor(aFrameMetrics.GetScrollId()); if (content) { FrameMetrics newSubFrameMetrics(aFrameMetrics); APZCCallbackHelper::UpdateSubFrame(content, newSubFrameMetrics); } } }