Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(321)

Unified Diff: visual_studio/NativeClientVSAddIn/NativeClientVSAddIn/PropertyManager.cs

Issue 11085093: Remove windows lines endings (Closed) Base URL: http://nativeclient-sdk.googlecode.com/svn/trunk/src
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: visual_studio/NativeClientVSAddIn/NativeClientVSAddIn/PropertyManager.cs
diff --git a/visual_studio/NativeClientVSAddIn/NativeClientVSAddIn/PropertyManager.cs b/visual_studio/NativeClientVSAddIn/NativeClientVSAddIn/PropertyManager.cs
index 02f2fbfb1764bdd334a99db8f44bf27b2f45a21f..3541a0ba47e45fb0034ed0d9d324ba35c952c74a 100644
--- a/visual_studio/NativeClientVSAddIn/NativeClientVSAddIn/PropertyManager.cs
+++ b/visual_studio/NativeClientVSAddIn/NativeClientVSAddIn/PropertyManager.cs
@@ -1,423 +1,423 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-namespace NativeClientVSAddIn
-{
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Windows.Forms;
-
- using EnvDTE;
- using EnvDTE80;
- using Microsoft.VisualStudio.VCProjectEngine;
-
- /// <summary>
- /// This class handles reading and writing properties on property pages.
- /// </summary>
- public class PropertyManager
- {
- /// <summary>
- /// The target project to read from.
- /// </summary>
- private VCProject project_;
-
- /// <summary>
- /// The target configuration and platform to read from.
- /// </summary>
- private VCConfiguration configuration_;
-
- /// <summary>
- /// Constructs the property manager. Sets the platform type to Other which invalidates use
- /// of the property manager until SetTarget is called with a valid target.
- /// </summary>
- public PropertyManager()
- {
- ProjectPlatform = ProjectPlatformType.Other;
- }
-
- /// <summary>
- /// Specifies the type of plug-in being run in this debug session.
- /// </summary>
- public enum ProjectPlatformType
- {
- /// <summary>
- /// Represents all non-pepper/non-nacl platform types.
- /// </summary>
- Other,
-
- /// <summary>
- /// Indicates project platform is a trusted plug-in (nexe).
- /// </summary>
- NaCl,
-
- /// <summary>
- /// Indicates project platform is an untrusted plug-in.
- /// </summary>
- Pepper
- }
-
- /// <summary>
- /// Gets or sets the current project platform type. This indicates Pepper, NaCl, or Other type
- /// of project. If this is set to Other then it is invalid to read the properties.
- /// </summary>
- public ProjectPlatformType ProjectPlatform { get; protected set; }
-
- /// <summary>
- /// Gets or sets the full path to the output assembly.
- /// </summary>
- public virtual string PluginAssembly
- {
- get
- {
- AssertValidPlatform();
- VCLinkerTool linker = configuration_.Tools.Item("VCLinkerTool");
- return configuration_.Evaluate(linker.OutputFile);
- }
-
- protected set
- {
- }
- }
-
- /// <summary>
- /// Gets or sets the main project directory.
- /// </summary>
- public virtual string ProjectDirectory
- {
- get
- {
- AssertValidPlatform();
- return project_.ProjectDirectory;
- }
-
- protected set
- {
- }
- }
-
- /// <summary>
- /// Gets or sets the directory where the output assembly is placed.
- /// </summary>
- public virtual string OutputDirectory
- {
- get
- {
- AssertValidPlatform();
- return configuration_.Evaluate(configuration_.OutputDirectory);
- }
-
- protected set
- {
- }
- }
-
- /// <summary>
- /// Gets or sets the Native Client VS Add-in version.
- /// </summary>
- public string NaClAddInVersion
- {
- get
- {
- AssertValidPlatform();
- return GetProperty("ConfigurationGeneral", "NaClAddInVersion");
- }
-
- protected set
- {
- }
- }
-
- /// <summary>
- /// Gets or sets this project's setting of where the NaCl SDK Root is.
- /// </summary>
- public string SDKRootDirectory
- {
- get
- {
- AssertValidPlatform();
- string value = GetProperty("ConfigurationGeneral", "VSNaClSDKRoot");
-
- if (string.IsNullOrEmpty(value))
- {
- MessageBox.Show(Strings.SDKPathNotSetError);
- return null;
- }
-
- return value.TrimEnd("/\\".ToArray<char>());
- }
-
- protected set
- {
- }
- }
-
- /// <summary>
- /// Gets or sets the port to use for the web server launched during debugging.
- /// </summary>
- public string WebServerPort
- {
- get
- {
- AssertValidPlatform();
- return GetProperty("ConfigurationGeneral", "NaClWebServerPort");
- }
-
- protected set
- {
- }
- }
-
- /// <summary>
- /// Gets or sets the command to debug (assumed to be chrome.exe)
- /// </summary>
- public string LocalDebuggerCommand
- {
- get
- {
- AssertValidPlatform();
- return GetProperty("WindowsLocalDebugger", "LocalDebuggerCommand");
- }
-
- protected set
- {
- }
- }
-
- /// <summary>
- /// Gets or sets the toolchain name. Ex: newlib.
- /// </summary>
- public string ToolchainName
- {
- get
- {
- AssertNaCl();
- return GetProperty("ConfigurationGeneral", "ToolchainName");
- }
-
- protected set
- {
- }
- }
-
- /// <summary>
- /// Gets or sets the target archirecture name. Ex: x86_64.
- /// </summary>
- public string TargetArchitecture
- {
- get
- {
- AssertNaCl();
- return GetProperty("ConfigurationGeneral", "TargetArchitecture");
- }
-
- protected set
- {
- }
- }
-
- /// <summary>
- /// Gets or sets the path to the NaCl manifest file (NaCl platform only).
- /// </summary>
- public string ManifestPath
- {
- get
- {
- AssertNaCl();
- return GetProperty("ConfigurationGeneral", "NaClManifestPath");
- }
-
- protected set
- {
- }
- }
-
- public static bool IsNaClPlatform(string platformName)
- {
- return platformName.Equals(Strings.NaCl32PlatformName, StringComparison.OrdinalIgnoreCase) ||
- platformName.Equals(Strings.NaCl64PlatformName, StringComparison.OrdinalIgnoreCase);
- }
-
- public static bool IsPepperPlatform(string platformName)
- {
- return platformName.Equals(Strings.PepperPlatformName, StringComparison.OrdinalIgnoreCase);
- }
-
- /// <summary>
- /// Sets the target project, platform, and configuration to get settings from.
- /// </summary>
- /// <param name="proj">Project to read settings from.</param>
- /// <param name="targetPlatformName">Platform type to read settings from.</param>
- /// <param name="targetConfigName">Configuration to read from (Debug or Release).</param>
- public void SetTarget(Project proj, string targetPlatformName, string targetConfigName)
- {
- // Set the project platform. If it is set to Other then no settings are valid to be read.
- if (IsPepperPlatform(targetPlatformName))
- {
- ProjectPlatform = ProjectPlatformType.Pepper;
- }
- else if (IsNaClPlatform(targetPlatformName))
- {
- ProjectPlatform = ProjectPlatformType.NaCl;
- }
- else
- {
- ProjectPlatform = ProjectPlatformType.Other;
- return;
- }
-
- // We don't support non-visual C/C++ projects.
- if (!Utility.IsVisualCProject(proj))
- {
- ProjectPlatform = ProjectPlatformType.Other;
- return;
- }
-
- // Set the member variables for configuration and project to the target.
- project_ = (VCProject)proj.Object;
- foreach (VCConfiguration config in project_.Configurations)
- {
- if (config.ConfigurationName == targetConfigName &&
- config.Platform.Name == targetPlatformName)
- {
- configuration_ = config;
- break;
- }
- }
- }
-
- /// <summary>
- /// Overload of SetTarget if the VCConfiguration is already known.
- /// </summary>
- /// <param name="config">Configuration to read settings from.</param>
- public void SetTarget(VCConfiguration config)
- {
- if (config == null)
- {
- throw new ArgumentNullException("Config");
- }
-
- configuration_ = config;
- project_ = config.project;
-
- if (IsPepperPlatform(config.Platform.Name))
- {
- ProjectPlatform = ProjectPlatformType.Pepper;
- }
- else if (IsNaClPlatform(config.Platform.Name))
- {
- ProjectPlatform = ProjectPlatformType.NaCl;
- }
- else
- {
- ProjectPlatform = ProjectPlatformType.Other;
- }
- }
-
- /// <summary>
- /// Sets the target project, platform, and configuration to the active start-up project and
- /// selected platform and configuration so that settings are read from them.
- /// </summary>
- /// <param name="dte">The main Visual Studio object.</param>
- public void SetTargetToActive(DTE2 dte)
- {
- // We require that there is only a single start-up project.
- // If multiple start-up projects are specified then we use the first and display a warning.
- Array startupProjects = dte.Solution.SolutionBuild.StartupProjects as Array;
- if (startupProjects == null || startupProjects.Length == 0)
- {
- throw new ArgumentOutOfRangeException("startupProjects.Length");
- }
- else if (startupProjects.Length > 1)
- {
- // Display a warning if multiple start-up projects and one is nacl/pepper.
- foreach (Project proj in startupProjects)
- {
- VCConfiguration config = Utility.GetActiveVCConfiguration(proj);
- if (IsPepperPlatform(config.Platform.Name) || IsNaClPlatform(config.Platform.Name))
- {
- System.Windows.Forms.MessageBox.Show(Strings.MultiStartProjectWarning);
- break;
- }
- }
- }
-
- // Get the first start-up project object.
- List<Project> projList = dte.Solution.Projects.OfType<Project>().ToList();
- string startProjectName = startupProjects.GetValue(0) as string;
- Project startProject = projList.Find(proj => proj.UniqueName == startProjectName);
-
- VCConfiguration activeConfig = Utility.GetActiveVCConfiguration(startProject);
-
- // GetActiveVCConfiguration will return null if not a VC project.
- if (activeConfig == null)
- {
- ProjectPlatform = ProjectPlatformType.Other;
- return;
- }
-
- SetTarget(activeConfig);
- }
-
- /// <summary>
- /// Reads any generic property from the current target properties.
- /// </summary>
- /// <param name="page">Name of the page where the property is located.</param>
- /// <param name="name">Name of the property.</param>
- /// <returns>The property requested.</returns>
- public virtual string GetProperty(string page, string name)
- {
- IVCRulePropertyStorage pageStorage = configuration_.Rules.Item(page);
- return pageStorage.GetEvaluatedPropertyValue(name);
- }
-
- /// <summary>
- /// Sets any generic property to the current target properties.
- /// </summary>
- /// <param name="page">Page where property is located.</param>
- /// <param name="name">Name of the property.</param>
- /// <param name="value">Unevaluated string value to set.</param>
- public virtual void SetProperty(string page, string name, string value)
- {
- IVCRulePropertyStorage pageStorage = configuration_.Rules.Item(page);
- pageStorage.SetPropertyValue(name, value);
- }
-
- /// <summary>
- /// Ensures that the current target has the NaCl platform and throws if not.
- /// </summary>
- private void AssertNaCl()
- {
- if (ProjectPlatform != ProjectPlatformType.NaCl)
- {
- throw new Exception(string.Format(
- "Cannot read NaCl only property on {0} platform", configuration_.Platform.Name));
- }
- }
-
- /// <summary>
- /// Ensures that the current target has the Pepper platform and throws if not.
- /// </summary>
- private void AssertPepper()
- {
- if (ProjectPlatform != ProjectPlatformType.Pepper)
- {
- throw new Exception(string.Format(
- "Cannot read Pepper only property on {0} platform", configuration_.Platform.Name));
- }
- }
-
- /// <summary>
- /// Ensures the current target is either the NaCl or Pepper platform. Throws if not.
- /// </summary>
- private void AssertValidPlatform()
- {
- if (ProjectPlatform == ProjectPlatformType.Other)
- {
- throw new Exception(string.Format(
- "Unsupported platform type: {0} platform", configuration_.Platform.Name));
- }
- }
- }
-}
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+namespace NativeClientVSAddIn
+{
+ using System;
+ using System.Collections.Generic;
+ using System.Linq;
+ using System.Windows.Forms;
+
+ using EnvDTE;
+ using EnvDTE80;
+ using Microsoft.VisualStudio.VCProjectEngine;
+
+ /// <summary>
+ /// This class handles reading and writing properties on property pages.
+ /// </summary>
+ public class PropertyManager
+ {
+ /// <summary>
+ /// The target project to read from.
+ /// </summary>
+ private VCProject project_;
+
+ /// <summary>
+ /// The target configuration and platform to read from.
+ /// </summary>
+ private VCConfiguration configuration_;
+
+ /// <summary>
+ /// Constructs the property manager. Sets the platform type to Other which invalidates use
+ /// of the property manager until SetTarget is called with a valid target.
+ /// </summary>
+ public PropertyManager()
+ {
+ ProjectPlatform = ProjectPlatformType.Other;
+ }
+
+ /// <summary>
+ /// Specifies the type of plug-in being run in this debug session.
+ /// </summary>
+ public enum ProjectPlatformType
+ {
+ /// <summary>
+ /// Represents all non-pepper/non-nacl platform types.
+ /// </summary>
+ Other,
+
+ /// <summary>
+ /// Indicates project platform is a trusted plug-in (nexe).
+ /// </summary>
+ NaCl,
+
+ /// <summary>
+ /// Indicates project platform is an untrusted plug-in.
+ /// </summary>
+ Pepper
+ }
+
+ /// <summary>
+ /// Gets or sets the current project platform type. This indicates Pepper, NaCl, or Other type
+ /// of project. If this is set to Other then it is invalid to read the properties.
+ /// </summary>
+ public ProjectPlatformType ProjectPlatform { get; protected set; }
+
+ /// <summary>
+ /// Gets or sets the full path to the output assembly.
+ /// </summary>
+ public virtual string PluginAssembly
+ {
+ get
+ {
+ AssertValidPlatform();
+ VCLinkerTool linker = configuration_.Tools.Item("VCLinkerTool");
+ return configuration_.Evaluate(linker.OutputFile);
+ }
+
+ protected set
+ {
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the main project directory.
+ /// </summary>
+ public virtual string ProjectDirectory
+ {
+ get
+ {
+ AssertValidPlatform();
+ return project_.ProjectDirectory;
+ }
+
+ protected set
+ {
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the directory where the output assembly is placed.
+ /// </summary>
+ public virtual string OutputDirectory
+ {
+ get
+ {
+ AssertValidPlatform();
+ return configuration_.Evaluate(configuration_.OutputDirectory);
+ }
+
+ protected set
+ {
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the Native Client VS Add-in version.
+ /// </summary>
+ public string NaClAddInVersion
+ {
+ get
+ {
+ AssertValidPlatform();
+ return GetProperty("ConfigurationGeneral", "NaClAddInVersion");
+ }
+
+ protected set
+ {
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets this project's setting of where the NaCl SDK Root is.
+ /// </summary>
+ public string SDKRootDirectory
+ {
+ get
+ {
+ AssertValidPlatform();
+ string value = GetProperty("ConfigurationGeneral", "VSNaClSDKRoot");
+
+ if (string.IsNullOrEmpty(value))
+ {
+ MessageBox.Show(Strings.SDKPathNotSetError);
+ return null;
+ }
+
+ return value.TrimEnd("/\\".ToArray<char>());
+ }
+
+ protected set
+ {
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the port to use for the web server launched during debugging.
+ /// </summary>
+ public string WebServerPort
+ {
+ get
+ {
+ AssertValidPlatform();
+ return GetProperty("ConfigurationGeneral", "NaClWebServerPort");
+ }
+
+ protected set
+ {
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the command to debug (assumed to be chrome.exe)
+ /// </summary>
+ public string LocalDebuggerCommand
+ {
+ get
+ {
+ AssertValidPlatform();
+ return GetProperty("WindowsLocalDebugger", "LocalDebuggerCommand");
+ }
+
+ protected set
+ {
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the toolchain name. Ex: newlib.
+ /// </summary>
+ public string ToolchainName
+ {
+ get
+ {
+ AssertNaCl();
+ return GetProperty("ConfigurationGeneral", "ToolchainName");
+ }
+
+ protected set
+ {
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the target archirecture name. Ex: x86_64.
+ /// </summary>
+ public string TargetArchitecture
+ {
+ get
+ {
+ AssertNaCl();
+ return GetProperty("ConfigurationGeneral", "TargetArchitecture");
+ }
+
+ protected set
+ {
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the path to the NaCl manifest file (NaCl platform only).
+ /// </summary>
+ public string ManifestPath
+ {
+ get
+ {
+ AssertNaCl();
+ return GetProperty("ConfigurationGeneral", "NaClManifestPath");
+ }
+
+ protected set
+ {
+ }
+ }
+
+ public static bool IsNaClPlatform(string platformName)
+ {
+ return platformName.Equals(Strings.NaCl32PlatformName, StringComparison.OrdinalIgnoreCase) ||
+ platformName.Equals(Strings.NaCl64PlatformName, StringComparison.OrdinalIgnoreCase);
+ }
+
+ public static bool IsPepperPlatform(string platformName)
+ {
+ return platformName.Equals(Strings.PepperPlatformName, StringComparison.OrdinalIgnoreCase);
+ }
+
+ /// <summary>
+ /// Sets the target project, platform, and configuration to get settings from.
+ /// </summary>
+ /// <param name="proj">Project to read settings from.</param>
+ /// <param name="targetPlatformName">Platform type to read settings from.</param>
+ /// <param name="targetConfigName">Configuration to read from (Debug or Release).</param>
+ public void SetTarget(Project proj, string targetPlatformName, string targetConfigName)
+ {
+ // Set the project platform. If it is set to Other then no settings are valid to be read.
+ if (IsPepperPlatform(targetPlatformName))
+ {
+ ProjectPlatform = ProjectPlatformType.Pepper;
+ }
+ else if (IsNaClPlatform(targetPlatformName))
+ {
+ ProjectPlatform = ProjectPlatformType.NaCl;
+ }
+ else
+ {
+ ProjectPlatform = ProjectPlatformType.Other;
+ return;
+ }
+
+ // We don't support non-visual C/C++ projects.
+ if (!Utility.IsVisualCProject(proj))
+ {
+ ProjectPlatform = ProjectPlatformType.Other;
+ return;
+ }
+
+ // Set the member variables for configuration and project to the target.
+ project_ = (VCProject)proj.Object;
+ foreach (VCConfiguration config in project_.Configurations)
+ {
+ if (config.ConfigurationName == targetConfigName &&
+ config.Platform.Name == targetPlatformName)
+ {
+ configuration_ = config;
+ break;
+ }
+ }
+ }
+
+ /// <summary>
+ /// Overload of SetTarget if the VCConfiguration is already known.
+ /// </summary>
+ /// <param name="config">Configuration to read settings from.</param>
+ public void SetTarget(VCConfiguration config)
+ {
+ if (config == null)
+ {
+ throw new ArgumentNullException("Config");
+ }
+
+ configuration_ = config;
+ project_ = config.project;
+
+ if (IsPepperPlatform(config.Platform.Name))
+ {
+ ProjectPlatform = ProjectPlatformType.Pepper;
+ }
+ else if (IsNaClPlatform(config.Platform.Name))
+ {
+ ProjectPlatform = ProjectPlatformType.NaCl;
+ }
+ else
+ {
+ ProjectPlatform = ProjectPlatformType.Other;
+ }
+ }
+
+ /// <summary>
+ /// Sets the target project, platform, and configuration to the active start-up project and
+ /// selected platform and configuration so that settings are read from them.
+ /// </summary>
+ /// <param name="dte">The main Visual Studio object.</param>
+ public void SetTargetToActive(DTE2 dte)
+ {
+ // We require that there is only a single start-up project.
+ // If multiple start-up projects are specified then we use the first and display a warning.
+ Array startupProjects = dte.Solution.SolutionBuild.StartupProjects as Array;
+ if (startupProjects == null || startupProjects.Length == 0)
+ {
+ throw new ArgumentOutOfRangeException("startupProjects.Length");
+ }
+ else if (startupProjects.Length > 1)
+ {
+ // Display a warning if multiple start-up projects and one is nacl/pepper.
+ foreach (Project proj in startupProjects)
+ {
+ VCConfiguration config = Utility.GetActiveVCConfiguration(proj);
+ if (IsPepperPlatform(config.Platform.Name) || IsNaClPlatform(config.Platform.Name))
+ {
+ System.Windows.Forms.MessageBox.Show(Strings.MultiStartProjectWarning);
+ break;
+ }
+ }
+ }
+
+ // Get the first start-up project object.
+ List<Project> projList = dte.Solution.Projects.OfType<Project>().ToList();
+ string startProjectName = startupProjects.GetValue(0) as string;
+ Project startProject = projList.Find(proj => proj.UniqueName == startProjectName);
+
+ VCConfiguration activeConfig = Utility.GetActiveVCConfiguration(startProject);
+
+ // GetActiveVCConfiguration will return null if not a VC project.
+ if (activeConfig == null)
+ {
+ ProjectPlatform = ProjectPlatformType.Other;
+ return;
+ }
+
+ SetTarget(activeConfig);
+ }
+
+ /// <summary>
+ /// Reads any generic property from the current target properties.
+ /// </summary>
+ /// <param name="page">Name of the page where the property is located.</param>
+ /// <param name="name">Name of the property.</param>
+ /// <returns>The property requested.</returns>
+ public virtual string GetProperty(string page, string name)
+ {
+ IVCRulePropertyStorage pageStorage = configuration_.Rules.Item(page);
+ return pageStorage.GetEvaluatedPropertyValue(name);
+ }
+
+ /// <summary>
+ /// Sets any generic property to the current target properties.
+ /// </summary>
+ /// <param name="page">Page where property is located.</param>
+ /// <param name="name">Name of the property.</param>
+ /// <param name="value">Unevaluated string value to set.</param>
+ public virtual void SetProperty(string page, string name, string value)
+ {
+ IVCRulePropertyStorage pageStorage = configuration_.Rules.Item(page);
+ pageStorage.SetPropertyValue(name, value);
+ }
+
+ /// <summary>
+ /// Ensures that the current target has the NaCl platform and throws if not.
+ /// </summary>
+ private void AssertNaCl()
+ {
+ if (ProjectPlatform != ProjectPlatformType.NaCl)
+ {
+ throw new Exception(string.Format(
+ "Cannot read NaCl only property on {0} platform", configuration_.Platform.Name));
+ }
+ }
+
+ /// <summary>
+ /// Ensures that the current target has the Pepper platform and throws if not.
+ /// </summary>
+ private void AssertPepper()
+ {
+ if (ProjectPlatform != ProjectPlatformType.Pepper)
+ {
+ throw new Exception(string.Format(
+ "Cannot read Pepper only property on {0} platform", configuration_.Platform.Name));
+ }
+ }
+
+ /// <summary>
+ /// Ensures the current target is either the NaCl or Pepper platform. Throws if not.
+ /// </summary>
+ private void AssertValidPlatform()
+ {
+ if (ProjectPlatform == ProjectPlatformType.Other)
+ {
+ throw new Exception(string.Format(
+ "Unsupported platform type: {0} platform", configuration_.Platform.Name));
+ }
+ }
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698