Update how SkPath handles fGenerationID and fSourcePath, and add tests to cover.

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

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

git-svn-id: http://skia.googlecode.com/svn/trunk/src@10756 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/core/SkPath.cpp b/core/SkPath.cpp
index ed2f555..47fa552 100644
--- a/core/SkPath.cpp
+++ b/core/SkPath.cpp
@@ -180,7 +180,8 @@
     fIsOval = false;
 #ifdef SK_BUILD_FOR_ANDROID
     GEN_ID_INC;
-    fSourcePath = NULL;
+    // We don't touch fSourcePath.  It's used to track texture garbage collection, so we don't
+    // want to muck with it if it's been set to something non-NULL.
 #endif
 }
 
@@ -189,7 +190,7 @@
     this->copyFields(that);
 #ifdef SK_BUILD_FOR_ANDROID
     fGenerationID = that.fGenerationID;
-    fSourcePath   = NULL;  // TODO(mtklein): follow up with Android: do we want to copy this too?
+    fSourcePath   = that.fSourcePath;
 #endif
     SkDEBUGCODE(that.validate();)
 }
@@ -206,7 +207,7 @@
         this->copyFields(that);
 #ifdef SK_BUILD_FOR_ANDROID
         GEN_ID_INC;  // Similar to swap, we can't just copy this or it could go back in time.
-        fSourcePath = NULL;  // TODO(mtklein): follow up with Android: do we want to copy this too?
+        fSourcePath = that.fSourcePath;
 #endif
     }
     SkDEBUGCODE(this->validate();)