Restore SkPath(const SkPath&) to copy the generation ID on Android.

BUG=
R=bsalomon@google.com, bungeman@google.com, reed@google.com

Review URL: https://codereview.chromium.org/22471002

git-svn-id: http://skia.googlecode.com/svn/trunk@10622 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tests/PathTest.cpp b/tests/PathTest.cpp
index e33c912..e698c7c 100644
--- a/tests/PathTest.cpp
+++ b/tests/PathTest.cpp
@@ -15,8 +15,9 @@
 #include "SkRandom.h"
 #include "SkReader32.h"
 #include "SkSize.h"
-#include "SkWriter32.h"
 #include "SkSurface.h"
+#include "SkTypes.h"
+#include "SkWriter32.h"
 
 #if defined(WIN32)
     #define SUPPRESS_VISIBILITY_WARNING
@@ -31,6 +32,23 @@
     return SkSurface::NewRaster(info);
 }
 
+static void test_android_specific_behavior(skiatest::Reporter* reporter) {
+#ifdef SK_BUILD_FOR_ANDROID
+    // Copy constructor should preserve generation ID, but assignment shouldn't.
+    SkPath original;
+    original.moveTo(0, 0);
+    original.lineTo(1, 1);
+    REPORTER_ASSERT(reporter, original.getGenerationID() > 0);
+
+    const SkPath copy(original);
+    REPORTER_ASSERT(reporter, copy.getGenerationID() == original.getGenerationID());
+
+    SkPath assign;
+    assign = original;
+    REPORTER_ASSERT(reporter, assign.getGenerationID() != original.getGenerationID());
+#endif
+}
+
 // This used to assert in the debug build, as the edges did not all line-up.
 static void test_bad_cubic_crbug234190() {
     SkPath path;
@@ -2450,6 +2468,7 @@
     test_crbug_170666();
     test_bad_cubic_crbug229478();
     test_bad_cubic_crbug234190();
+    test_android_specific_behavior(reporter);
 }
 
 #include "TestClassDef.h"