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

Unified Diff: base/command_line_validator.cc

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 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
« no previous file with comments | « base/command_line_validator.h ('k') | base/command_line_validator_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/command_line_validator.cc
diff --git a/base/command_line_validator.cc b/base/command_line_validator.cc
deleted file mode 100644
index ef2cc7620d5147f82005345a8be2cc900bb83917..0000000000000000000000000000000000000000
--- a/base/command_line_validator.cc
+++ /dev/null
@@ -1,256 +0,0 @@
-// Copyright 2008-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// ========================================================================
-
-#include "omaha/base/command_line_validator.h"
-
-#include <atlbase.h>
-
-#include "omaha/base/command_line_parser.h"
-#include "omaha/base/debug.h"
-#include "omaha/base/error.h"
-#include "omaha/base/logging.h"
-#include "omaha/base/utils.h"
-
-namespace omaha {
-
-CommandLineValidator::CommandLineValidator() : scenario_sequence_number_(0) {
-}
-
-CommandLineValidator::~CommandLineValidator() {
- Clear();
-}
-
-HRESULT CommandLineValidator::CreateScenario(const CString& scenario_name) {
- if (scenarios_.find(scenario_name) != scenarios_.end()) {
- return E_INVALIDARG;
- }
-
- ScenarioParameters scenario_parameters;
- scenarios_[scenario_name] = scenario_parameters;
- return S_OK;
-}
-
-// TODO(Omaha): Instead of creating the scenario in the map then populating it,
-// which requires these methods to know about the map, verify the scenario
-// exists, etc. - why not build the scenario then add it to the map? That seems
-// more straightforward.
-HRESULT CommandLineValidator::AddScenarioParameter(
- const CString& scenario_name,
- const CString& switch_name,
- int num_required_parameters) {
- MapScenariosIter iter = scenarios_.find(scenario_name);
- if (iter == scenarios_.end()) {
- return E_INVALIDARG;
- }
-
- ScenarioParameter* scenario_parameter =
- new ScenarioParameter(switch_name, num_required_parameters);
- (*iter).second.required.push_back(scenario_parameter);
- return S_OK;
-}
-
-HRESULT CommandLineValidator::AddOptionalScenarioParameter(
- const CString& scenario_name,
- const CString& switch_name,
- int num_required_parameters) {
- MapScenariosIter iter = scenarios_.find(scenario_name);
- if (iter == scenarios_.end()) {
- return E_INVALIDARG;
- }
-
- ScenarioParameter* scenario_parameter =
- new ScenarioParameter(switch_name, num_required_parameters);
- (*iter).second.optional.push_back(scenario_parameter);
- return S_OK;
-}
-
-HRESULT CommandLineValidator::CreateScenarioFromCmdLine(
- const CString& command_line,
- CString* scenario_name) {
- ASSERT1(scenario_name);
-
- CommandLineParser parser;
- HRESULT hr = parser.ParseFromString(command_line);
- if (FAILED(hr)) {
- return hr;
- }
-
- // Generate a unique scenario name.
- CString scenario_name_str;
- do {
- ++scenario_sequence_number_;
- scenario_name_str.Format(_T("scenario_%d"), scenario_sequence_number_);
- } while (scenarios_.find(scenario_name_str) != scenarios_.end());
-
- CreateScenario(scenario_name_str);
-
- int switch_count = parser.GetSwitchCount();
- for (int idx_switch = 0; idx_switch < switch_count; ++idx_switch) {
- CString switch_name;
- hr = parser.GetSwitchNameAtIndex(idx_switch, &switch_name);
- if (FAILED(hr)) {
- return hr;
- }
-
- int arg_count = 0;
- hr = parser.GetSwitchArgumentCount(switch_name, &arg_count);
- if (FAILED(hr)) {
- return hr;
- }
-
- hr = AddScenarioParameter(scenario_name_str, switch_name, arg_count);
- if (FAILED(hr)) {
- return hr;
- }
- }
-
- switch_count = parser.GetOptionalSwitchCount();
- for (int idx_switch = 0; idx_switch < switch_count; ++idx_switch) {
- CString switch_name;
- hr = parser.GetOptionalSwitchNameAtIndex(idx_switch, &switch_name);
- if (FAILED(hr)) {
- return hr;
- }
-
- int arg_count = 0;
- hr = parser.GetOptionalSwitchArgumentCount(switch_name, &arg_count);
- if (FAILED(hr)) {
- return hr;
- }
-
- hr = AddOptionalScenarioParameter(scenario_name_str,
- switch_name,
- arg_count);
- if (FAILED(hr)) {
- return hr;
- }
- }
-
- *scenario_name = scenario_name_str;
-
- return S_OK;
-}
-
-HRESULT CommandLineValidator::Validate(
- const CommandLineParser& command_line_parser,
- CString* scenario_name) const {
- // Attempt to verify the data within the command_line_parser against each of
- // the scenarios.
- MapScenariosConstIter scenarios_iter;
- for (scenarios_iter = scenarios_.begin();
- scenarios_iter != scenarios_.end();
- ++scenarios_iter) {
- // Make sure we have a match for the number of switches in this scenario.
- int parser_switch_count = command_line_parser.GetSwitchCount();
- int scenario_required_switch_count =
- (*scenarios_iter).second.required.size();
- int scenario_optional_switch_count =
- (*scenarios_iter).second.optional.size();
-
- if (parser_switch_count < scenario_required_switch_count ||
- parser_switch_count > scenario_required_switch_count +
- scenario_optional_switch_count) {
- continue;
- }
-
- if (DoesScenarioMatch(command_line_parser, (*scenarios_iter).second)) {
- *scenario_name = (*scenarios_iter).first;
- return S_OK;
- }
- }
-
- return GOOGLEUPDATE_COMMANDLINE_E_NO_SCENARIO_HANDLER_MATCHED;
-}
-
-bool CommandLineValidator::DoesScenarioMatch(
- const CommandLineParser& command_line_parser,
- const ScenarioParameters& scenario_parameters) const {
- // Make sure that each switch matches with the right number of arguments.
- ScenarioParameterVectorConstIter parameter_iter;
- for (parameter_iter = scenario_parameters.required.begin();
- parameter_iter != scenario_parameters.required.end();
- ++parameter_iter) {
- CString current_switch_name = (*parameter_iter)->switch_name_;
- // This would probably allow duplicate switches (i.e. /c /c) in a command
- // line.
- if (!command_line_parser.HasSwitch(current_switch_name)) {
- return false;
- }
-
- int arg_count = 0;
- HRESULT hr = command_line_parser.GetSwitchArgumentCount(current_switch_name,
- &arg_count);
- if (FAILED(hr)) {
- return false;
- }
-
- int switch_arg_count = (*parameter_iter)->num_required_parameters_;
- if (arg_count != switch_arg_count) {
- return false;
- }
- }
-
- int parser_optional_switch_count = command_line_parser.GetSwitchCount() -
- scenario_parameters.required.size();
- for (parameter_iter = scenario_parameters.optional.begin();
- parser_optional_switch_count != 0 &&
- parameter_iter != scenario_parameters.optional.end();
- ++parameter_iter) {
- CString current_switch_name = (*parameter_iter)->switch_name_;
- // This would probably allow duplicate optional switches (i.e. /oem /oem) in
- // a command line.
- if (!command_line_parser.HasSwitch(current_switch_name)) {
- continue;
- }
-
- int arg_count = 0;
- HRESULT hr = command_line_parser.GetSwitchArgumentCount(current_switch_name,
- &arg_count);
- if (FAILED(hr)) {
- return false;
- }
-
- int switch_arg_count = (*parameter_iter)->num_required_parameters_;
- if (arg_count != switch_arg_count) {
- return false;
- }
- --parser_optional_switch_count;
- }
-
- return parser_optional_switch_count == 0;
-}
-
-void CommandLineValidator::Clear() {
- MapScenariosIter scenarios_iter;
- for (scenarios_iter = scenarios_.begin();
- scenarios_iter != scenarios_.end();
- ++scenarios_iter) {
- ScenarioParameterVectorIter param_iter;
- for (param_iter = (*scenarios_iter).second.required.begin();
- param_iter != (*scenarios_iter).second.required.end();
- ++param_iter) {
- delete *param_iter;
- }
- for (param_iter = (*scenarios_iter).second.optional.begin();
- param_iter != (*scenarios_iter).second.optional.end();
- ++param_iter) {
- delete *param_iter;
- }
- }
- scenarios_.clear();
-}
-
-} // namespace omaha
-
« no previous file with comments | « base/command_line_validator.h ('k') | base/command_line_validator_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698