Bug 1404854 Part 1 - Move null pointers checking from DragCaretInternal() to DragCaret(). draft
authorTing-Yu Lin <tlin@mozilla.com>
Fri, 06 Oct 2017 15:45:32 +0800
changeset 676578 bac344b8cda981bf54f326c86c9f53d1e8847af4
parent 676552 5eba13f5b3a6ad80decdd8c7b30bff5fa477844f
child 676579 d02fb91e9835b11bfda7034aaad26772a95a122e
push id83535
push userbmo:tlin@mozilla.com
push dateMon, 09 Oct 2017 02:19:24 +0000
bugs1404854
milestone58.0a1
Bug 1404854 Part 1 - Move null pointers checking from DragCaretInternal() to DragCaret(). We don't need to check GetFrameSelection() because valid GetSelection() implies valid GetFrameSelection(). MozReview-Commit-ID: 9WH7HxN27yF
layout/base/AccessibleCaretManager.cpp
--- a/layout/base/AccessibleCaretManager.cpp
+++ b/layout/base/AccessibleCaretManager.cpp
@@ -501,16 +501,20 @@ AccessibleCaretManager::PressCaret(const
 }
 
 nsresult
 AccessibleCaretManager::DragCaret(const nsPoint& aPoint)
 {
   MOZ_ASSERT(mActiveCaret);
   MOZ_ASSERT(GetCaretMode() != CaretMode::None);
 
+  if (!mPresShell || !mPresShell->GetRootFrame() || !GetSelection()) {
+    return NS_ERROR_NULL_POINTER;
+  }
+
   nsPoint point(aPoint.x, aPoint.y + mOffsetYToCaretLogicalPosition);
   DragCaretInternal(point);
   UpdateCarets();
   return NS_OK;
 }
 
 nsresult
 AccessibleCaretManager::ReleaseCaret()
@@ -1205,39 +1209,33 @@ AccessibleCaretManager::CompareTreePosit
 {
   return (aStartFrame && aEndFrame &&
           nsLayoutUtils::CompareTreePosition(aStartFrame, aEndFrame) <= 0);
 }
 
 nsresult
 AccessibleCaretManager::DragCaretInternal(const nsPoint& aPoint)
 {
-  if (!mPresShell) {
-    return NS_ERROR_NULL_POINTER;
-  }
+  MOZ_ASSERT(mPresShell);
 
   nsIFrame* rootFrame = mPresShell->GetRootFrame();
-  if (!rootFrame) {
-    return NS_ERROR_NULL_POINTER;
-  }
+  MOZ_ASSERT(rootFrame, "We need root frame to compute caret dragging!");
 
   nsPoint point = AdjustDragBoundary(aPoint);
 
   // Find out which content we point to
   nsIFrame* ptFrame = nsLayoutUtils::GetFrameForPoint(
     rootFrame, point,
     nsLayoutUtils::IGNORE_PAINT_SUPPRESSION | nsLayoutUtils::IGNORE_CROSS_DOC);
   if (!ptFrame) {
     return NS_ERROR_FAILURE;
   }
 
   RefPtr<nsFrameSelection> fs = GetFrameSelection();
-  if (!fs) {
-    return NS_ERROR_NULL_POINTER;
-  }
+  MOZ_ASSERT(fs);
 
   nsresult result;
   nsIFrame* newFrame = nullptr;
   nsPoint newPoint;
   nsPoint ptInFrame = point;
   nsLayoutUtils::TransformPoint(rootFrame, ptFrame, ptInFrame);
   result = fs->ConstrainFrameAndPointToAnchorSubtree(ptFrame, ptInFrame,
                                                      &newFrame, newPoint);
@@ -1251,19 +1249,17 @@ AccessibleCaretManager::DragCaretInterna
 
   nsIFrame::ContentOffsets offsets =
     newFrame->GetContentOffsetsFromPoint(newPoint);
   if (offsets.IsNull()) {
     return NS_ERROR_FAILURE;
   }
 
   Selection* selection = GetSelection();
-  if (!selection) {
-    return NS_ERROR_NULL_POINTER;
-  }
+  MOZ_ASSERT(selection);
 
   if (GetCaretMode() == CaretMode::Selection &&
       !RestrictCaretDraggingOffsets(offsets)) {
     return NS_ERROR_FAILURE;
   }
 
   ClearMaintainedSelection();