diff --git a/shell/application_manager/BUILD.gn b/shell/application_manager/BUILD.gn
index b51332a..273b5fe 100644
--- a/shell/application_manager/BUILD.gn
+++ b/shell/application_manager/BUILD.gn
@@ -19,6 +19,7 @@
     "identity.h",
     "local_fetcher.cc",
     "local_fetcher.h",
+    "native_application_options.h",
     "native_runner.h",
     "network_fetcher.cc",
     "network_fetcher.h",
diff --git a/shell/application_manager/application_manager.cc b/shell/application_manager/application_manager.cc
index 3d411a7..8fcfdd5 100644
--- a/shell/application_manager/application_manager.cc
+++ b/shell/application_manager/application_manager.cc
@@ -352,7 +352,7 @@
   // TODO(vtl): (Maybe this should be done by the factory/runner?)
 
   GURL base_resolved_url = GetBaseURLAndQuery(fetcher->GetURL(), nullptr);
-  NativeRunnerFactory::Options options;
+  NativeApplicationOptions options;
   if (url_to_native_options_.find(base_resolved_url) !=
       url_to_native_options_.end()) {
     DVLOG(2) << "Applying stored native options to resolved URL "
@@ -371,7 +371,7 @@
 
 void ApplicationManager::RunNativeApplication(
     InterfaceRequest<Application> application_request,
-    const NativeRunnerFactory::Options& options,
+    const NativeApplicationOptions& options,
     scoped_ptr<Fetcher> fetcher,
     const base::FilePath& path,
     bool path_exists) {
@@ -448,19 +448,16 @@
   }
 }
 
-void ApplicationManager::SetNativeOptionsForURL(
-    const NativeRunnerFactory::Options& options,
+NativeApplicationOptions* ApplicationManager::GetNativeApplicationOptionsForURL(
     const GURL& url) {
   DCHECK(!url.has_query());  // Precondition.
   // Apply mappings and resolution to get the resolved URL.
   GURL resolved_url =
       delegate_->ResolveMojoURL(delegate_->ResolveMappings(url));
-  DCHECK(!resolved_url.has_query());  // Still shouldn't have query.
   // TODO(vtl): We should probably also remove/disregard the query string (and
   // maybe canonicalize in other ways).
-  DVLOG(2) << "Storing native options for resolved URL " << resolved_url
-           << " (original URL " << url << ")";
-  url_to_native_options_[resolved_url] = options;
+  DCHECK(!resolved_url.has_query());  // Still shouldn't have query.
+  return &url_to_native_options_[resolved_url];
 }
 
 ApplicationLoader* ApplicationManager::GetLoaderForURL(const GURL& url) {
diff --git a/shell/application_manager/application_manager.h b/shell/application_manager/application_manager.h
index d1fc338..9365ef4 100644
--- a/shell/application_manager/application_manager.h
+++ b/shell/application_manager/application_manager.h
@@ -18,6 +18,7 @@
 #include "mojo/services/url_response_disk_cache/public/interfaces/url_response_disk_cache.mojom.h"
 #include "shell/application_manager/application_loader.h"
 #include "shell/application_manager/identity.h"
+#include "shell/application_manager/native_application_options.h"
 #include "shell/application_manager/native_runner.h"
 #include "shell/native_application_support.h"
 #include "url/gurl.h"
@@ -117,18 +118,18 @@
                           const std::string& scheme);
   // These strings will be passed to the Initialize() method when an Application
   // is instantiated.
-  // TODO(vtl): Maybe we should store/compare resolved URLs, like
-  // SetNativeOptionsForURL() below?
+  // TODO(vtl): Maybe we should store/compare resolved URLs?
   void SetArgsForURL(const std::vector<std::string>& args, const GURL& url);
   // These options will be used in running any native application at |url|
   // (which shouldn't contain a query string). (|url| will be mapped and
   // resolved, and any application whose base resolved URL matches it will have
   // |options| applied.)
+  // Note: Calling this for a URL will add (default) options for that URL if
+  // necessary.
   // TODO(vtl): This may not do what's desired if the resolved URL results in an
   // HTTP redirect. Really, we want options to be identified with a particular
   // implementation, maybe via a signed manifest or something like that.
-  void SetNativeOptionsForURL(const NativeRunnerFactory::Options& options,
-                              const GURL& url);
+  NativeApplicationOptions* GetNativeApplicationOptionsForURL(const GURL& url);
 
   // Destroys all Shell-ends of connections established with Applications.
   // Applications connected by this ApplicationManager will observe pipe errors
@@ -141,15 +142,15 @@
  private:
   class ContentHandlerConnection;
 
-  typedef std::map<GURL, scoped_ptr<ApplicationLoader>> URLToLoaderMap;
-  typedef std::map<std::string, scoped_ptr<ApplicationLoader>>
-      SchemeToLoaderMap;
-  typedef std::map<Identity, scoped_ptr<ShellImpl>> IdentityToShellImplMap;
-  typedef std::map<GURL, scoped_ptr<ContentHandlerConnection>>
-      URLToContentHandlerMap;
-  typedef std::map<GURL, std::vector<std::string>> URLToArgsMap;
-  typedef std::map<std::string, GURL> MimeTypeToURLMap;
-  typedef std::map<GURL, NativeRunnerFactory::Options> URLToNativeOptionsMap;
+  using URLToLoaderMap = std::map<GURL, scoped_ptr<ApplicationLoader>>;
+  using SchemeToLoaderMap =
+      std::map<std::string, scoped_ptr<ApplicationLoader>>;
+  using IdentityToShellImplMap = std::map<Identity, scoped_ptr<ShellImpl>>;
+  using URLToContentHandlerMap =
+      std::map<GURL, scoped_ptr<ContentHandlerConnection>>;
+  using URLToArgsMap = std::map<GURL, std::vector<std::string>>;
+  using MimeTypeToURLMap = std::map<std::string, GURL>;
+  using URLToNativeOptionsMap = std::map<GURL, NativeApplicationOptions>;
 
   void ConnectToApplicationWithParameters(
       const GURL& application_url,
@@ -201,7 +202,7 @@
 
   void RunNativeApplication(
       mojo::InterfaceRequest<mojo::Application> application_request,
-      const NativeRunnerFactory::Options& options,
+      const NativeApplicationOptions& options,
       scoped_ptr<Fetcher> fetcher,
       const base::FilePath& file_path,
       bool path_exists);
diff --git a/shell/application_manager/native_application_options.h b/shell/application_manager/native_application_options.h
new file mode 100644
index 0000000..f4c71c4
--- /dev/null
+++ b/shell/application_manager/native_application_options.h
@@ -0,0 +1,22 @@
+// Copyright 2015 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.
+
+#ifndef SHELL_APPLICATION_MANAGER_NATIVE_APPLICATION_OPTIONS_H_
+#define SHELL_APPLICATION_MANAGER_NATIVE_APPLICATION_OPTIONS_H_
+
+namespace shell {
+
+// Options relevant to running native applications. (Note that some of these may
+// be set at different stages, as more is learned about the application.)
+// TODO(vtl): Maybe these some of these should be tristate (unknown/true/false)
+// instead of of booleans.
+struct NativeApplicationOptions {
+  bool force_in_process = false;
+  bool require_32_bit = false;
+  bool allow_new_privs = false;
+};
+
+}  // namespace shell
+
+#endif  // SHELL_APPLICATION_MANAGER_NATIVE_APPLICATION_OPTIONS_H_
diff --git a/shell/application_manager/native_runner.h b/shell/application_manager/native_runner.h
index e50bb08..886bfc9 100644
--- a/shell/application_manager/native_runner.h
+++ b/shell/application_manager/native_runner.h
@@ -17,6 +17,8 @@
 
 namespace shell {
 
+struct NativeApplicationOptions;
+
 // ApplicationManager requires implementations of NativeRunner and
 // NativeRunnerFactory to run native applications.
 class NativeRunner {
@@ -39,17 +41,9 @@
 
 class NativeRunnerFactory {
  public:
-  // Options for running the native app. (This will contain, e.g., information
-  // about the sandbox profile, etc.)
-  struct Options {
-    // Constructs with default options.
-    Options() : force_in_process(false) {}
-
-    bool force_in_process;
-  };
-
   virtual ~NativeRunnerFactory() {}
-  virtual scoped_ptr<NativeRunner> Create(const Options& options) = 0;
+  virtual scoped_ptr<NativeRunner> Create(
+      const NativeApplicationOptions& options) = 0;
 };
 
 }  // namespace shell
