Merge "Add SkPaint.setTextLocale()"
diff --git a/include/core/SkPaint.h b/include/core/SkPaint.h
index 31bc30b..7be5ad2 100644
--- a/include/core/SkPaint.h
+++ b/include/core/SkPaint.h
@@ -13,6 +13,7 @@
 #include "SkColor.h"
 #include "SkDrawLooper.h"
 #include "SkXfermode.h"
+#include "SkString.h"
 
 class SkAutoGlyphCache;
 class SkColorFilter;
@@ -654,6 +655,18 @@
     */
     void    setTextAlign(Align align);
 
+#ifdef SK_BUILD_FOR_ANDROID
+    /** Return the paint's text locale value.
+        @return the paint's text locale value used for drawing text.
+    */
+    const SkString& getTextLocale() const { return fTextLocale; }
+
+    /** Set the paint's text locale.
+        @param locale set the paint's locale value for drawing text.
+    */
+    void    setTextLocale(const SkString& locale);
+#endif
+
     /** Return the paint's text size.
         @return the paint's text size.
     */
@@ -888,6 +901,9 @@
     unsigned        fStyle : 2;
     unsigned        fTextEncoding : 2;  // 3 values
     unsigned        fHinting : 2;
+#ifdef SK_BUILD_FOR_ANDROID
+    SkString        fTextLocale;
+#endif
 
     SkDrawCacheProc    getDrawCacheProc() const;
     SkMeasureCacheProc getMeasureCacheProc(TextBufferDirection dir,
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
index e93e8d6..82a1f57 100644
--- a/src/core/SkPaint.cpp
+++ b/src/core/SkPaint.cpp
@@ -7,6 +7,8 @@
  */
 
 
+#include <new>
+
 #include "SkPaint.h"
 #include "SkColorFilter.h"
 #include "SkFontHost.h"
@@ -69,6 +71,7 @@
     fTextEncoding = kUTF8_TextEncoding;
     fHinting    = SkPaintDefaults_Hinting;
 #ifdef SK_BUILD_FOR_ANDROID
+    new(&fTextLocale) SkString();
     fGenerationID = 0;
 #endif
 }
@@ -85,6 +88,9 @@
     SkSafeRef(fRasterizer);
     SkSafeRef(fLooper);
     SkSafeRef(fImageFilter);
+#ifdef SK_BUILD_FOR_ANDROID
+    new(&fTextLocale) SkString(src.fTextLocale);
+#endif
 }
 
 SkPaint::~SkPaint() {
@@ -123,10 +129,12 @@
     SkSafeUnref(fImageFilter);
 
 #ifdef SK_BUILD_FOR_ANDROID
+    fTextLocale.~SkString();
     uint32_t oldGenerationID = fGenerationID;
 #endif
     memcpy(this, &src, sizeof(src));
 #ifdef SK_BUILD_FOR_ANDROID
+    new(&fTextLocale) SkString(src.fTextLocale);
     fGenerationID = oldGenerationID + 1;
 #endif
 
@@ -357,6 +365,15 @@
     }
 }
 
+#ifdef SK_BUILD_FOR_ANDROID
+void SkPaint::setTextLocale(const SkString& locale) {
+    if(!fTextLocale.equals(locale)) {
+        fTextLocale.set(locale);
+        GEN_ID_INC;
+    }
+}
+#endif
+
 ///////////////////////////////////////////////////////////////////////////////
 
 SkTypeface* SkPaint::setTypeface(SkTypeface* font) {