| Index: tools/gn/visual_studio_writer.cc | 
| diff --git a/tools/gn/visual_studio_writer.cc b/tools/gn/visual_studio_writer.cc | 
| index dec083753f79052cdc6a8a0ef80a75cfacf5d739..b0392b41eacd7d2dc6d2574e7218c0cbe1580602 100644 | 
| --- a/tools/gn/visual_studio_writer.cc | 
| +++ b/tools/gn/visual_studio_writer.cc | 
| @@ -64,8 +64,12 @@ struct SourceFileWriter { | 
| const SourceFile& source_file_; | 
| }; | 
|  | 
| -const char kToolsetVersion[] = "v140";                     // Visual Studio 2015 | 
| -const char kVisualStudioVersion[] = "14.0";                // Visual Studio 2015 | 
| +const char kToolsetVersionVs2013[] = "v120";               // Visual Studio 2013 | 
| +const char kToolsetVersionVs2015[] = "v140";               // Visual Studio 2015 | 
| +const char kProjectVersionVs2013[] = "12.0";               // Visual Studio 2013 | 
| +const char kProjectVersionVs2015[] = "14.0";               // Visual Studio 2015 | 
| +const char kVersionStringVs2013[] = "Visual Studio 2013";  // Visual Studio 2013 | 
| +const char kVersionStringVs2015[] = "Visual Studio 2015";  // Visual Studio 2015 | 
| const char kWindowsKitsVersion[] = "10";                   // Windows 10 SDK | 
| const char kWindowsKitsIncludeVersion[] = "10.0.10240.0";  // Windows 10 SDK | 
|  | 
| @@ -173,7 +177,8 @@ VisualStudioWriter::SolutionProject::SolutionProject( | 
|  | 
| VisualStudioWriter::SolutionProject::~SolutionProject() = default; | 
|  | 
| -VisualStudioWriter::VisualStudioWriter(const BuildSettings* build_settings) | 
| +VisualStudioWriter::VisualStudioWriter(const BuildSettings* build_settings, | 
| +                                       Version version) | 
| : build_settings_(build_settings) { | 
| const Value* value = build_settings->build_args().GetArgOverride("is_debug"); | 
| is_debug_config_ = value == nullptr || value->boolean_value(); | 
| @@ -182,6 +187,21 @@ VisualStudioWriter::VisualStudioWriter(const BuildSettings* build_settings) | 
| if (value != nullptr && value->string_value() == "x64") | 
| config_platform_ = "x64"; | 
|  | 
| +  switch (version) { | 
| +    case Version::Vs2013: | 
| +      project_version_ = kProjectVersionVs2013; | 
| +      toolset_version_ = kToolsetVersionVs2013; | 
| +      version_string_ = kVersionStringVs2013; | 
| +      break; | 
| +    case Version::Vs2015: | 
| +      project_version_ = kProjectVersionVs2015; | 
| +      toolset_version_ = kToolsetVersionVs2015; | 
| +      version_string_ = kVersionStringVs2015; | 
| +      break; | 
| +    default: | 
| +      NOTREACHED() << "Not a valid Visual Studio Version: " << version; | 
| +  } | 
| + | 
| windows_kits_include_dirs_ = GetWindowsKitsIncludeDirs(); | 
| } | 
|  | 
| @@ -193,10 +213,11 @@ VisualStudioWriter::~VisualStudioWriter() { | 
| // static | 
| bool VisualStudioWriter::RunAndWriteFiles(const BuildSettings* build_settings, | 
| Builder* builder, | 
| +                                          Version version, | 
| Err* err) { | 
| std::vector<const Target*> targets = builder->GetAllResolvedTargets(); | 
|  | 
| -  VisualStudioWriter writer(build_settings); | 
| +  VisualStudioWriter writer(build_settings, version); | 
| writer.projects_.reserve(targets.size()); | 
| writer.folders_.reserve(targets.size()); | 
|  | 
| @@ -290,7 +311,7 @@ bool VisualStudioWriter::WriteProjectFileContents( | 
| XmlElementWriter project( | 
| out, "Project", | 
| XmlAttributes("DefaultTargets", "Build") | 
| -          .add("ToolsVersion", kVisualStudioVersion) | 
| +          .add("ToolsVersion", project_version_) | 
| .add("xmlns", "http://schemas.microsoft.com/developer/msbuild/2003")); | 
|  | 
| { | 
| @@ -333,7 +354,7 @@ bool VisualStudioWriter::WriteProjectFileContents( | 
| { | 
| scoped_ptr<XmlElementWriter> locals = | 
| project.SubElement("PropertyGroup", XmlAttributes("Label", "Locals")); | 
| -    locals->SubElement("PlatformToolset")->Text(kToolsetVersion); | 
| +    locals->SubElement("PlatformToolset")->Text(toolset_version_); | 
| } | 
|  | 
| project.SubElement( | 
| @@ -580,7 +601,7 @@ void VisualStudioWriter::WriteSolutionFileContents( | 
| const base::FilePath& solution_dir_path) { | 
| out << "Microsoft Visual Studio Solution File, Format Version 12.00" | 
| << std::endl; | 
| -  out << "# Visual Studio 2015" << std::endl; | 
| +  out << "# " << version_string_ << std::endl; | 
|  | 
| SourceDir solution_dir(FilePathToUTF8(solution_dir_path)); | 
| for (const SolutionEntry* folder : folders_) { | 
|  |