diff --git a/mozilla/content/html/content/src/nsGenericHTMLElement.cpp b/mozilla/content/html/content/src/nsGenericHTMLElement.cpp
index 9f5a6cda0c2..2831f2bcbde 100644
--- a/mozilla/content/html/content/src/nsGenericHTMLElement.cpp
+++ b/mozilla/content/html/content/src/nsGenericHTMLElement.cpp
@@ -2428,7 +2428,7 @@ static const nsAttrValue::EnumTable kVAlignTable[] = {
};
static const nsAttrValue::EnumTable kDivAlignTable[] = {
- { "left", NS_STYLE_TEXT_ALIGN_LEFT },
+ { "left", NS_STYLE_TEXT_ALIGN_MOZ_LEFT },
{ "right", NS_STYLE_TEXT_ALIGN_MOZ_RIGHT },
{ "center", NS_STYLE_TEXT_ALIGN_MOZ_CENTER },
{ "middle", NS_STYLE_TEXT_ALIGN_MOZ_CENTER },
@@ -2509,7 +2509,7 @@ nsGenericHTMLElement::ParseTableHAlignValue(const nsAString& aString,
// These tables are used for TD,TH,TR, etc (but not TABLE)
static const nsAttrValue::EnumTable kTableCellHAlignTable[] = {
- { "left", NS_STYLE_TEXT_ALIGN_LEFT },
+ { "left", NS_STYLE_TEXT_ALIGN_MOZ_LEFT },
{ "right", NS_STYLE_TEXT_ALIGN_MOZ_RIGHT },
{ "center", NS_STYLE_TEXT_ALIGN_MOZ_CENTER },
{ "char", NS_STYLE_TEXT_ALIGN_CHAR },
@@ -2518,7 +2518,7 @@ static const nsAttrValue::EnumTable kTableCellHAlignTable[] = {
};
static const nsAttrValue::EnumTable kCompatTableCellHAlignTable[] = {
- { "left", NS_STYLE_TEXT_ALIGN_LEFT },
+ { "left", NS_STYLE_TEXT_ALIGN_MOZ_LEFT },
{ "right", NS_STYLE_TEXT_ALIGN_MOZ_RIGHT },
{ "center", NS_STYLE_TEXT_ALIGN_MOZ_CENTER },
{ "char", NS_STYLE_TEXT_ALIGN_CHAR },
diff --git a/mozilla/layout/base/nsStyleConsts.h b/mozilla/layout/base/nsStyleConsts.h
index cedadc02816..e877693ed23 100644
--- a/mozilla/layout/base/nsStyleConsts.h
+++ b/mozilla/layout/base/nsStyleConsts.h
@@ -526,6 +526,7 @@
#define NS_STYLE_TEXT_ALIGN_CHAR 5 //align based on a certain character, for table cell
#define NS_STYLE_TEXT_ALIGN_MOZ_CENTER 6
#define NS_STYLE_TEXT_ALIGN_MOZ_RIGHT 7
+#define NS_STYLE_TEXT_ALIGN_MOZ_LEFT 8
// See nsStyleText, nsStyleFont
#define NS_STYLE_TEXT_DECORATION_NONE 0
diff --git a/mozilla/layout/generic/nsBlockReflowContext.cpp b/mozilla/layout/generic/nsBlockReflowContext.cpp
index 680c149c824..7993a89adc8 100644
--- a/mozilla/layout/generic/nsBlockReflowContext.cpp
+++ b/mozilla/layout/generic/nsBlockReflowContext.cpp
@@ -268,7 +268,7 @@ nsBlockReflowContext::AlignBlockHorizontally(nscoord aWidth,
aAlign.mXOffset += remainingSpace;
} else if (styleText->mTextAlign == NS_STYLE_TEXT_ALIGN_MOZ_CENTER) {
aAlign.mXOffset += remainingSpace / 2;
- } else {
+ } else if (styleText->mTextAlign != NS_STYLE_TEXT_ALIGN_MOZ_LEFT) {
// If we don't have a special text-align value indicating
// HTML alignment, then use the CSS rules.
diff --git a/mozilla/layout/generic/nsHTMLReflowState.cpp b/mozilla/layout/generic/nsHTMLReflowState.cpp
index e29daea156f..898904b17ca 100644
--- a/mozilla/layout/generic/nsHTMLReflowState.cpp
+++ b/mozilla/layout/generic/nsHTMLReflowState.cpp
@@ -2165,11 +2165,13 @@ nsHTMLReflowState::CalculateBlockSideMargins(nscoord aAvailWidth,
// First check if there is an HTML alignment that we should honor
const nsHTMLReflowState* prs = parentReflowState;
if (prs &&
- (prs->mStyleText->mTextAlign == NS_STYLE_TEXT_ALIGN_MOZ_CENTER ||
+ (prs->mStyleText->mTextAlign == NS_STYLE_TEXT_ALIGN_MOZ_LEFT ||
+ prs->mStyleText->mTextAlign == NS_STYLE_TEXT_ALIGN_MOZ_CENTER ||
prs->mStyleText->mTextAlign == NS_STYLE_TEXT_ALIGN_MOZ_RIGHT)) {
- isAutoLeftMargin = PR_TRUE;
+ isAutoLeftMargin =
+ prs->mStyleText->mTextAlign != NS_STYLE_TEXT_ALIGN_MOZ_LEFT;
isAutoRightMargin =
- prs->mStyleText->mTextAlign == NS_STYLE_TEXT_ALIGN_MOZ_CENTER;
+ prs->mStyleText->mTextAlign != NS_STYLE_TEXT_ALIGN_MOZ_RIGHT;
}
// Otherwise apply the CSS rules, and ignore one margin by forcing
// it to 'auto', depending on 'direction'.
diff --git a/mozilla/layout/generic/nsLineLayout.cpp b/mozilla/layout/generic/nsLineLayout.cpp
index fce6c484e39..d501aaceb99 100644
--- a/mozilla/layout/generic/nsLineLayout.cpp
+++ b/mozilla/layout/generic/nsLineLayout.cpp
@@ -2830,6 +2830,7 @@ nsLineLayout::HorizontalAlignFrames(nsRect& aLineBounds,
break;
case NS_STYLE_TEXT_ALIGN_LEFT:
+ case NS_STYLE_TEXT_ALIGN_MOZ_LEFT:
break;
case NS_STYLE_TEXT_ALIGN_JUSTIFY:
diff --git a/mozilla/layout/style/nsCSSKeywordList.h b/mozilla/layout/style/nsCSSKeywordList.h
index da22d435583..52d2c1a94d6 100644
--- a/mozilla/layout/style/nsCSSKeywordList.h
+++ b/mozilla/layout/style/nsCSSKeywordList.h
@@ -126,6 +126,7 @@ CSS_KEY(-moz-japanese-informal, _moz_japanese_informal)
CSS_KEY(-moz-kannada, _moz_kannada)
CSS_KEY(-moz-khmer, _moz_khmer)
CSS_KEY(-moz-lao, _moz_lao)
+CSS_KEY(-moz-left, _moz_left)
CSS_KEY(-moz-list, _moz_list)
CSS_KEY(-moz-mac-accentdarkestshadow, _moz_mac_accentdarkestshadow)
CSS_KEY(-moz-mac-accentdarkshadow, _moz_mac_accentdarkshadow)
diff --git a/mozilla/layout/style/nsCSSProps.cpp b/mozilla/layout/style/nsCSSProps.cpp
index 50f19fcc015..98478bb7ca8 100644
--- a/mozilla/layout/style/nsCSSProps.cpp
+++ b/mozilla/layout/style/nsCSSProps.cpp
@@ -829,6 +829,7 @@ const PRInt32 nsCSSProps::kTextAlignKTable[] = {
eCSSKeyword_justify, NS_STYLE_TEXT_ALIGN_JUSTIFY,
eCSSKeyword__moz_center, NS_STYLE_TEXT_ALIGN_MOZ_CENTER,
eCSSKeyword__moz_right, NS_STYLE_TEXT_ALIGN_MOZ_RIGHT,
+ eCSSKeyword__moz_left, NS_STYLE_TEXT_ALIGN_MOZ_LEFT,
eCSSKeyword_start, NS_STYLE_TEXT_ALIGN_DEFAULT,
eCSSKeyword_UNKNOWN,-1
};