summaryrefslogtreecommitdiff
path: root/accessible
diff options
context:
space:
mode:
authorwin7-7 <win7-7@users.noreply.github.com>2020-02-16 16:06:53 +0200
committerwin7-7 <win7-7@users.noreply.github.com>2020-02-16 16:06:53 +0200
commitd4098037a4a6bee464fde4b70644e730e13b487f (patch)
tree60ff499425a2c3acad1c0d66f88aae3a85f2509c /accessible
parent4234b3a36b364da2d5dd4f243f2543a9d76057d8 (diff)
downloaduxp-d4098037a4a6bee464fde4b70644e730e13b487f.tar.gz
Issue #1355 - Make nsTableCellFrame::GetColIndex/GetRowIndex faster
We can devirtualize it, remove some branches.
Diffstat (limited to 'accessible')
-rw-r--r--accessible/html/HTMLTableAccessible.cpp48
-rw-r--r--accessible/html/HTMLTableAccessible.h6
2 files changed, 27 insertions, 27 deletions
diff --git a/accessible/html/HTMLTableAccessible.cpp b/accessible/html/HTMLTableAccessible.cpp
index b0cdc0932d..af7dd561f8 100644
--- a/accessible/html/HTMLTableAccessible.cpp
+++ b/accessible/html/HTMLTableAccessible.cpp
@@ -175,23 +175,17 @@ HTMLTableCellAccessible::Table() const
uint32_t
HTMLTableCellAccessible::ColIdx() const
{
- nsITableCellLayout* cellLayout = GetCellLayout();
- NS_ENSURE_TRUE(cellLayout, 0);
-
- int32_t colIdx = 0;
- cellLayout->GetColIndex(colIdx);
- return colIdx > 0 ? static_cast<uint32_t>(colIdx) : 0;
+ nsTableCellFrame* cellFrame = GetCellFrame();
+ NS_ENSURE_TRUE(cellFrame, 0);
+ return cellFrame->ColIndex();
}
uint32_t
HTMLTableCellAccessible::RowIdx() const
{
- nsITableCellLayout* cellLayout = GetCellLayout();
- NS_ENSURE_TRUE(cellLayout, 0);
-
- int32_t rowIdx = 0;
- cellLayout->GetRowIndex(rowIdx);
- return rowIdx > 0 ? static_cast<uint32_t>(rowIdx) : 0;
+ nsTableCellFrame* cellFrame = GetCellFrame();
+ NS_ENSURE_TRUE(cellFrame, 0);
+ return cellFrame->RowIndex();
}
uint32_t
@@ -285,6 +279,12 @@ HTMLTableCellAccessible::GetCellLayout() const
return do_QueryFrame(mContent->GetPrimaryFrame());
}
+nsTableCellFrame*
+HTMLTableCellAccessible::GetCellFrame() const
+{
+ return do_QueryFrame(mContent->GetPrimaryFrame());
+}
+
nsresult
HTMLTableCellAccessible::GetCellIndexes(int32_t& aRowIdx, int32_t& aColIdx) const
{
@@ -520,11 +520,9 @@ HTMLTableAccessible::SelectedCellCount()
if (!cellFrame || !cellFrame->IsSelected())
continue;
- int32_t startRow = -1, startCol = -1;
- cellFrame->GetRowIndex(startRow);
- cellFrame->GetColIndex(startCol);
- if (startRow >= 0 && (uint32_t)startRow == rowIdx &&
- startCol >= 0 && (uint32_t)startCol == colIdx)
+ uint32_t startRow = cellFrame->RowIndex();
+ uint32_t startCol = cellFrame->ColIndex();
+ if (startRow == rowIdx && startCol == colIdx)
count++;
}
}
@@ -570,11 +568,9 @@ HTMLTableAccessible::SelectedCells(nsTArray<Accessible*>* aCells)
if (!cellFrame || !cellFrame->IsSelected())
continue;
- int32_t startCol = -1, startRow = -1;
- cellFrame->GetRowIndex(startRow);
- cellFrame->GetColIndex(startCol);
- if ((startRow >= 0 && (uint32_t)startRow != rowIdx) ||
- (startCol >= 0 && (uint32_t)startCol != colIdx))
+ uint32_t startRow = cellFrame->RowIndex();
+ uint32_t startCol = cellFrame->ColIndex();
+ if (startRow != rowIdx || startCol != colIdx)
continue;
Accessible* cell = mDoc->GetAccessible(cellFrame->GetContent());
@@ -597,11 +593,9 @@ HTMLTableAccessible::SelectedCellIndices(nsTArray<uint32_t>* aCells)
if (!cellFrame || !cellFrame->IsSelected())
continue;
- int32_t startRow = -1, startCol = -1;
- cellFrame->GetColIndex(startCol);
- cellFrame->GetRowIndex(startRow);
- if (startRow >= 0 && (uint32_t)startRow == rowIdx &&
- startCol >= 0 && (uint32_t)startCol == colIdx)
+ uint32_t startCol = cellFrame->ColIndex();
+ uint32_t startRow = cellFrame->RowIndex();
+ if (startRow == rowIdx && startCol == colIdx)
aCells->AppendElement(CellIndexAt(rowIdx, colIdx));
}
}
diff --git a/accessible/html/HTMLTableAccessible.h b/accessible/html/HTMLTableAccessible.h
index 830d34ae9d..c7cfc9ddf3 100644
--- a/accessible/html/HTMLTableAccessible.h
+++ b/accessible/html/HTMLTableAccessible.h
@@ -11,6 +11,7 @@
#include "TableCellAccessible.h"
class nsITableCellLayout;
+class nsTableCellFrame;
namespace mozilla {
namespace a11y {
@@ -54,6 +55,11 @@ protected:
nsITableCellLayout* GetCellLayout() const;
/**
+ * Return the table cell frame.
+ */
+ nsTableCellFrame* GetCellFrame() const;
+
+ /**
* Return row and column indices of the cell.
*/
nsresult GetCellIndexes(int32_t& aRowIdx, int32_t& aColIdx) const;