| Index: base/test/launcher/test_launcher_ios.cc
 | 
| diff --git a/base/test/launcher/test_launcher_ios.cc b/base/test/launcher/test_launcher_ios.cc
 | 
| index 82353cc4c12ad1dd154b55263869d545c9ce9882..7028133b5247a27900658b409219219404ae2605 100644
 | 
| --- a/base/test/launcher/test_launcher_ios.cc
 | 
| +++ b/base/test/launcher/test_launcher_ios.cc
 | 
| @@ -15,6 +15,7 @@
 | 
|  #include "base/message_loop/message_loop.h"
 | 
|  #include "base/path_service.h"
 | 
|  #include "base/process/launch.h"
 | 
| +#include "base/strings/string_util.h"
 | 
|  #include "base/test/launcher/unit_test_launcher.h"
 | 
|  #include "base/test/test_switches.h"
 | 
|  #include "base/test/test_timeouts.h"
 | 
| @@ -54,9 +55,9 @@ void PrintUsage() {
 | 
|    fflush(stdout);
 | 
|  }
 | 
|  
 | 
| -class IOSUnitTestLauncherDelegate : public base::UnitTestLauncherDelegate {
 | 
| +class IOSUnitTestPlatformDelegate : public base::UnitTestPlatformDelegate {
 | 
|   public:
 | 
| -  IOSUnitTestLauncherDelegate() : base::UnitTestLauncherDelegate(0, false) {
 | 
| +  IOSUnitTestPlatformDelegate() {
 | 
|    }
 | 
|  
 | 
|    bool Init() WARN_UNUSED_RESULT {
 | 
| @@ -107,6 +108,27 @@ class IOSUnitTestLauncherDelegate : public base::UnitTestLauncherDelegate {
 | 
|      return base::ReadTestNamesFromFile(test_list_path, output);
 | 
|    }
 | 
|  
 | 
| +  bool CreateTemporaryFile(base::FilePath* path) override {
 | 
| +    if (!CreateTemporaryDirInDir(writable_path_, std::string(), path))
 | 
| +      return false;
 | 
| +    *path = path->AppendASCII("test_results.xml");
 | 
| +    return true;
 | 
| +  }
 | 
| +
 | 
| +  base::CommandLine GetCommandLineForChildGTestProcess(
 | 
| +      const std::vector<std::string>& test_names,
 | 
| +      const base::FilePath& output_file) override {
 | 
| +    base::CommandLine cmd_line(dir_exe_.AppendASCII(test_name_ + ".app"));
 | 
| +    cmd_line.AppendSwitchPath(switches::kTestLauncherOutput, output_file);
 | 
| +    cmd_line.AppendSwitchASCII(base::kGTestFilterFlag,
 | 
| +                               JoinString(test_names, ":"));
 | 
| +    return cmd_line;
 | 
| +  }
 | 
| +
 | 
| +  std::string GetWrapperForChildGTestProcess() override {
 | 
| +    return dir_exe_.AppendASCII("iossim").value();
 | 
| +  }
 | 
| +
 | 
|   private:
 | 
|    // Directory containing test launcher's executable.
 | 
|    base::FilePath dir_exe_;
 | 
| @@ -117,7 +139,7 @@ class IOSUnitTestLauncherDelegate : public base::UnitTestLauncherDelegate {
 | 
|    // Path that launched test binary can write to.
 | 
|    base::FilePath writable_path_;
 | 
|  
 | 
| -  DISALLOW_COPY_AND_ASSIGN(IOSUnitTestLauncherDelegate);
 | 
| +  DISALLOW_COPY_AND_ASSIGN(IOSUnitTestPlatformDelegate);
 | 
|  };
 | 
|  
 | 
|  }  // namespace
 | 
| @@ -138,12 +160,13 @@ int main(int argc, char** argv) {
 | 
|  
 | 
|    base::MessageLoopForIO message_loop;
 | 
|  
 | 
| -  IOSUnitTestLauncherDelegate delegate;
 | 
| -  if (!delegate.Init()) {
 | 
| -    fprintf(stderr, "Failed to intialize test launcher delegate.\n");
 | 
| +  IOSUnitTestPlatformDelegate platform_delegate;
 | 
| +  if (!platform_delegate.Init()) {
 | 
| +    fprintf(stderr, "Failed to intialize test launcher platform delegate.\n");
 | 
|      fflush(stderr);
 | 
|      return 1;
 | 
|    }
 | 
| +  base::UnitTestLauncherDelegate delegate(&platform_delegate, 0, false);
 | 
|    // Force one job since we can't run multiple simulators in parallel.
 | 
|    base::TestLauncher launcher(&delegate, 1);
 | 
|    bool success = launcher.Run();
 | 
| 
 |