diff --git a/tools/gn/bundle_data.cc b/tools/gn/bundle_data.cc
index f1b60c0..f211c1f 100644
--- a/tools/gn/bundle_data.cc
+++ b/tools/gn/bundle_data.cc
@@ -105,19 +105,19 @@
   if (!asset_catalog_sources_.empty())
     outputs_as_source->push_back(GetCompiledAssetCatalogPath());
 
-  if (!root_dir_.empty())
+  if (!root_dir_.is_null())
     outputs_as_source->push_back(GetBundleRootDirOutput(settings));
 }
 
 SourceFile BundleData::GetCompiledAssetCatalogPath() const {
   DCHECK(!asset_catalog_sources_.empty());
-  std::string assets_car_path = resources_dir_ + "/Assets.car";
+  std::string assets_car_path = resources_dir_.value() + "/Assets.car";
   return SourceFile(SourceFile::SWAP_IN, &assets_car_path);
 }
 
 SourceFile BundleData::GetBundleRootDirOutput(const Settings* settings) const {
   const SourceDir& build_dir = settings->build_settings()->build_dir();
-  std::string bundle_root_relative = RebasePath(root_dir(), build_dir);
+  std::string bundle_root_relative = RebasePath(root_dir().value(), build_dir);
 
   size_t first_component = bundle_root_relative.find('/');
   if (first_component != std::string::npos) {
@@ -127,5 +127,5 @@
     outermost_bundle_dir.AppendToString(&return_value);
     return SourceFile(SourceFile::SWAP_IN, &return_value);
   }
-  return SourceFile(root_dir());
+  return SourceFile(root_dir().value());
 }
diff --git a/tools/gn/bundle_data.h b/tools/gn/bundle_data.h
index aaf5e33..d742674 100644
--- a/tools/gn/bundle_data.h
+++ b/tools/gn/bundle_data.h
@@ -9,6 +9,7 @@
 #include <vector>
 
 #include "tools/gn/bundle_file_rule.h"
+#include "tools/gn/source_dir.h"
 #include "tools/gn/unique_vector.h"
 
 class OutputFile;
@@ -85,17 +86,17 @@
   BundleFileRules& file_rules() { return file_rules_; }
   const BundleFileRules& file_rules() const { return file_rules_; }
 
-  std::string& root_dir() { return root_dir_; }
-  const std::string& root_dir() const { return root_dir_; }
+  SourceDir& root_dir() { return root_dir_; }
+  const SourceDir& root_dir() const { return root_dir_; }
 
-  std::string& resources_dir() { return resources_dir_; }
-  const std::string& resources_dir() const { return resources_dir_; }
+  SourceDir& resources_dir() { return resources_dir_; }
+  const SourceDir& resources_dir() const { return resources_dir_; }
 
-  std::string& executable_dir() { return executable_dir_; }
-  const std::string& executable_dir() const { return executable_dir_; }
+  SourceDir& executable_dir() { return executable_dir_; }
+  const SourceDir& executable_dir() const { return executable_dir_; }
 
-  std::string& plugins_dir() { return plugins_dir_; }
-  const std::string& plugins_dir() const { return plugins_dir_; }
+  SourceDir& plugins_dir() { return plugins_dir_; }
+  const SourceDir& plugins_dir() const { return plugins_dir_; }
 
   // Recursive collection of all bundle_data that the target depends on.
   const UniqueTargets& bundle_deps() const { return bundle_deps_; }
@@ -107,10 +108,10 @@
 
   // All those values are subdirectories relative to root_build_dir, and apart
   // from root_dir, they are either equal to root_dir_ or subdirectories of it.
-  std::string root_dir_;
-  std::string resources_dir_;
-  std::string executable_dir_;
-  std::string plugins_dir_;
+  SourceDir root_dir_;
+  SourceDir resources_dir_;
+  SourceDir executable_dir_;
+  SourceDir plugins_dir_;
 };
 
 #endif  // TOOLS_GN_BUNDLE_DATA_H_
diff --git a/tools/gn/bundle_file_rule.cc b/tools/gn/bundle_file_rule.cc
index 7684196..9f78667 100644
--- a/tools/gn/bundle_file_rule.cc
+++ b/tools/gn/bundle_file_rule.cc
@@ -29,16 +29,16 @@
         output_path.append(subrange.literal);
         break;
       case SUBSTITUTION_BUNDLE_ROOT_DIR:
-        output_path.append(bundle_data.root_dir());
+        output_path.append(bundle_data.root_dir().value());
         break;
       case SUBSTITUTION_BUNDLE_RESOURCES_DIR:
-        output_path.append(bundle_data.resources_dir());
+        output_path.append(bundle_data.resources_dir().value());
         break;
       case SUBSTITUTION_BUNDLE_EXECUTABLE_DIR:
-        output_path.append(bundle_data.executable_dir());
+        output_path.append(bundle_data.executable_dir().value());
         break;
       case SUBSTITUTION_BUNDLE_PLUGINS_DIR:
-        output_path.append(bundle_data.plugins_dir());
+        output_path.append(bundle_data.plugins_dir().value());
         break;
       default:
         output_path.append(SubstitutionWriter::GetSourceSubstitution(
diff --git a/tools/gn/create_bundle_target_generator.cc b/tools/gn/create_bundle_target_generator.cc
index 206a918..6085419 100644
--- a/tools/gn/create_bundle_target_generator.cc
+++ b/tools/gn/create_bundle_target_generator.cc
@@ -25,7 +25,7 @@
   target_->set_output_type(Target::CREATE_BUNDLE);
 
   BundleData& bundle_data = target_->bundle_data();
-  if (!GetBundleDir(std::string(),
+  if (!GetBundleDir(SourceDir(),
                     variables::kBundleRootDir,
                     &bundle_data.root_dir()))
     return;
@@ -44,26 +44,26 @@
 }
 
 bool CreateBundleTargetGenerator::GetBundleDir(
-    const std::string& bundle_root_dir,
+    const SourceDir& bundle_root_dir,
     const base::StringPiece& name,
-    std::string* bundle_dir) {
+    SourceDir* bundle_dir) {
   const Value* value = scope_->GetValue(name, true);
   if (!value)
     return true;
   if (!value->VerifyTypeIs(Value::STRING, err_))
     return false;
-  const std::string& str = value->string_value();
+  std::string str = value->string_value();
   if (!EnsureStringIsInOutputDir(GetBuildSettings()->build_dir(), str,
                                  value->origin(), err_))
     return false;
-  if (str != bundle_root_dir &&
-      !IsStringInOutputDir(SourceDir(bundle_root_dir), str)) {
+  if (str != bundle_root_dir.value() &&
+      !IsStringInOutputDir(bundle_root_dir, str)) {
     *err_ = Err(value->origin(), "Path is not in bundle root dir.",
         "The given file should be in the bundle root directory or below.\n"
         "Normally you would do \"$bundle_root_dir/foo\". I interpreted this\n"
         "as \"" + str + "\".");
     return false;
   }
-  bundle_dir->assign(value->string_value());
+  bundle_dir->SwapValue(&str);
   return true;
 }
diff --git a/tools/gn/create_bundle_target_generator.h b/tools/gn/create_bundle_target_generator.h
index db82b8a..50040b8 100644
--- a/tools/gn/create_bundle_target_generator.h
+++ b/tools/gn/create_bundle_target_generator.h
@@ -8,6 +8,8 @@
 #include "base/macros.h"
 #include "tools/gn/target_generator.h"
 
+class SourceDir;
+
 // Populates a Target with the values from a create_bundle rule.
 class CreateBundleTargetGenerator : public TargetGenerator {
  public:
@@ -21,9 +23,9 @@
   void DoRun() override;
 
  private:
-  bool GetBundleDir(const std::string& bundle_root_dir,
+  bool GetBundleDir(const SourceDir& bundle_root_dir,
                     const base::StringPiece& name,
-                    std::string* bundle_dir);
+                    SourceDir* bundle_dir);
 
   DISALLOW_COPY_AND_ASSIGN(CreateBundleTargetGenerator);
 };
diff --git a/tools/gn/ninja_create_bundle_target_writer_unittest.cc b/tools/gn/ninja_create_bundle_target_writer_unittest.cc
index 44dd894..d35b519 100644
--- a/tools/gn/ninja_create_bundle_target_writer_unittest.cc
+++ b/tools/gn/ninja_create_bundle_target_writer_unittest.cc
@@ -14,10 +14,11 @@
 namespace {
 
 void SetupBundleDataDir(BundleData* bundle_data, const std::string& root_dir) {
-  bundle_data->root_dir().assign(root_dir + "/bar.bundle");
-  bundle_data->resources_dir().assign(bundle_data->root_dir() + "/Resources");
-  bundle_data->executable_dir().assign(bundle_data->root_dir() + "/Executable");
-  bundle_data->plugins_dir().assign(bundle_data->root_dir() + "/PlugIns");
+  std::string bundle_root_dir = root_dir + "/bar.bundle";
+  bundle_data->root_dir() = SourceDir(bundle_root_dir);
+  bundle_data->resources_dir() = SourceDir(bundle_root_dir + "/Resources");
+  bundle_data->executable_dir() = SourceDir(bundle_root_dir + "/Executable");
+  bundle_data->plugins_dir() = SourceDir(bundle_root_dir + "/PlugIns");
 }
 
 }  // namespace
@@ -115,10 +116,11 @@
   target.set_output_type(Target::CREATE_BUNDLE);
 
   const std::string bundle_root_dir("//out/Debug/bar.bundle/Contents");
-  target.bundle_data().root_dir().assign(bundle_root_dir);
-  target.bundle_data().resources_dir().assign(bundle_root_dir + "/Resources");
-  target.bundle_data().executable_dir().assign(bundle_root_dir + "/MacOS");
-  target.bundle_data().plugins_dir().assign(bundle_root_dir + "/Plug Ins");
+  target.bundle_data().root_dir() = SourceDir(bundle_root_dir);
+  target.bundle_data().resources_dir() =
+      SourceDir(bundle_root_dir + "/Resources");
+  target.bundle_data().executable_dir() = SourceDir(bundle_root_dir + "/MacOS");
+  target.bundle_data().plugins_dir() = SourceDir(bundle_root_dir + "/Plug Ins");
 
   std::vector<SourceFile> sources;
   sources.push_back(SourceFile("//foo/input1.txt"));
