Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / media_galleries / media_galleries_test_util.cc
index 736fb30..45206a8 100644 (file)
@@ -12,6 +12,7 @@
 #include "base/file_util.h"
 #include "base/files/file_path.h"
 #include "base/path_service.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
 #include "chrome/browser/extensions/extension_service.h"
 #include "chrome/browser/media_galleries/fileapi/picasa_finder.h"
@@ -44,15 +45,14 @@ scoped_refptr<extensions::Extension> AddMediaGalleriesApp(
   manifest->SetString(extensions::manifest_keys::kVersion, "0.1");
   manifest->SetInteger(extensions::manifest_keys::kManifestVersion, 2);
   base::ListValue* background_script_list = new base::ListValue;
-  background_script_list->Append(
-      base::Value::CreateStringValue("background.js"));
+  background_script_list->Append(new base::StringValue("background.js"));
   manifest->Set(extensions::manifest_keys::kPlatformAppBackgroundScripts,
                 background_script_list);
 
   base::ListValue* permission_detail_list = new base::ListValue;
   for (size_t i = 0; i < media_galleries_permissions.size(); i++)
     permission_detail_list->Append(
-        base::Value::CreateStringValue(media_galleries_permissions[i]));
+        new base::StringValue(media_galleries_permissions[i]));
   base::DictionaryValue* media_galleries_permission =
       new base::DictionaryValue();
   media_galleries_permission->Set("mediaGalleries", permission_detail_list);
@@ -87,7 +87,7 @@ scoped_refptr<extensions::Extension> AddMediaGalleriesApp(
 }
 
 EnsureMediaDirectoriesExists::EnsureMediaDirectoriesExists()
-    : num_galleries_(0) {
+    : num_galleries_(0), times_overrides_changed_(0) {
   Init();
 }
 
@@ -98,6 +98,38 @@ EnsureMediaDirectoriesExists::~EnsureMediaDirectoriesExists() {
 #endif  // OS_MACOSX
 }
 
+void EnsureMediaDirectoriesExists::ChangeMediaPathOverrides() {
+  // Each pointer must be reset an extra time so as to destroy the existing
+  // override prior to creating a new one. This is because the PathService,
+  // which supports these overrides, only allows one override to exist per path
+  // in its internal bookkeeping; attempting to add a second override invokes
+  // a CHECK crash.
+  music_override_.reset();
+  std::string music_path_string("music");
+  music_path_string.append(base::IntToString(times_overrides_changed_));
+  music_override_.reset(new base::ScopedPathOverride(
+      chrome::DIR_USER_MUSIC,
+      fake_dir_.path().AppendASCII(music_path_string)));
+
+  pictures_override_.reset();
+  std::string pictures_path_string("pictures");
+  pictures_path_string.append(base::IntToString(times_overrides_changed_));
+  pictures_override_.reset(new base::ScopedPathOverride(
+      chrome::DIR_USER_PICTURES,
+      fake_dir_.path().AppendASCII(pictures_path_string)));
+
+  video_override_.reset();
+  std::string videos_path_string("videos");
+  videos_path_string.append(base::IntToString(times_overrides_changed_));
+  video_override_.reset(new base::ScopedPathOverride(
+      chrome::DIR_USER_VIDEOS,
+      fake_dir_.path().AppendASCII(videos_path_string)));
+
+  times_overrides_changed_++;
+
+  num_galleries_ = 3;
+}
+
 base::FilePath EnsureMediaDirectoriesExists::GetFakeAppDataPath() const {
   DCHECK(fake_dir_.IsValid());
   return fake_dir_.path().AppendASCII("appdata");
@@ -125,7 +157,7 @@ void EnsureMediaDirectoriesExists::SetCustomPicasaAppDataPath(
       base::SysUTF8ToNSString(path.value()),
       false);
 }
-#endif // OS_MACOSX
+#endif  // OS_MACOSX
 
 #if defined(OS_WIN) || defined(OS_MACOSX)
 base::FilePath
@@ -190,15 +222,9 @@ void EnsureMediaDirectoriesExists::Init() {
 
   iapps::SetMacPreferencesForTesting(mac_preferences_.get());
   picasa::SetMacPreferencesForTesting(mac_preferences_.get());
-#endif // OS_MACOSX
+#endif  // OS_MACOSX
 
-  music_override_.reset(new base::ScopedPathOverride(
-      chrome::DIR_USER_MUSIC, fake_dir_.path().AppendASCII("music")));
-  pictures_override_.reset(new base::ScopedPathOverride(
-      chrome::DIR_USER_PICTURES, fake_dir_.path().AppendASCII("pictures")));
-  video_override_.reset(new base::ScopedPathOverride(
-      chrome::DIR_USER_VIDEOS, fake_dir_.path().AppendASCII("videos")));
-  num_galleries_ = 3;
+  ChangeMediaPathOverrides();
 #endif  // OS_CHROMEOS || OS_ANDROID
 }