text: // Copyright 2013 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.
  
  #include "shell/switches.h"
  
  #include "base/basictypes.h"
  
  namespace switches {
  
  namespace {
  // This controls logging verbosity. It's not strictly a switch for mojo_shell,
  // and isn't included in the public switches, but is included here so that it
  // doesn't trigger an error at startup.
  const char kV[] = "v";
  
  }  // namespace
  
  // Specify configuration arguments for a Mojo application URL. For example:
  // --args-for='mojo:wget http://www.google.com'
  const char kArgsFor[] = "args-for";
  
  // Used to specify the type of child process (switch values from
  // |ChildProcess::Type|).
  const char kChildProcessType[] = "child-process-type";
  
  // Comma separated list like:
  // text/html,mojo:html_viewer,application/bravo,https://abarth.com/bravo
  const char kContentHandlers[] = "content-handlers";
  
  // Force dynamically loaded apps / services to be loaded irrespective of cache
  // instructions.
  const char kDisableCache[] = "disable-cache";
  
  // Allow externally-running applications to discover, connect to, and register
  // themselves with the shell.
  // TODO(cmasone): Work in progress. Once we're sure this works, remove.
  const char kEnableExternalApplications[] = "enable-external-applications";
  
  // Load apps in separate processes.
  // TODO(vtl): Work in progress; doesn't work. Flip this to "disable" (or maybe
  // change it to "single-process") when it works.
  const char kEnableMultiprocess[] = "enable-multiprocess";
  
  // Print the usage message and exit.
  const char kHelp[] = "help";
  
  // Map mojo: URLs to a shared library of similar name at this origin. See
  // url_resolver.cc for details.
  const char kOrigin[] = "origin";
  
  // Specifies a set of mappings to apply when resolving urls. The value is set of
  // ',' separated mappings, where each mapping consists of a pair of urls giving
  // the to/from url to map. For example, 'a=b,c=d' contains two mappings, the
  // first maps 'a' to 'b' and the second 'c' to 'd'.
  const char kURLMappings[] = "url-mappings";
  
  const char* kSwitchArray[] = {kV,
                                kArgsFor,
                                kChildProcessType,
                                kContentHandlers,
                                kDisableCache,
                                kEnableExternalApplications,
                                kEnableMultiprocess,
                                kHelp,
                                kOrigin,
                                kURLMappings};
  
  const std::set<std::string> GetAllSwitches() {
    std::set<std::string> switch_set;
  
    for (size_t i = 0; i < arraysize(kSwitchArray); ++i)
      switch_set.insert(kSwitchArray[i]);
    return switch_set;
  }
  
  }  // namespace switches
  