--- /dev/null
+// Copyright (c) 2013 The Chromium Embedded Framework 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 CEF_TESTS_SHARED_COMMON_CLIENT_APP_H_
+#define CEF_TESTS_SHARED_COMMON_CLIENT_APP_H_
+#pragma once
+
+#include <vector>
+
+#include "include/cef_app.h"
+
+namespace client {
+
+// Base class for customizing process-type-based behavior.
+class ClientApp : public CefApp {
+ public:
+ ClientApp();
+
+ enum ProcessType {
+ BrowserProcess,
+ RendererProcess,
+ ZygoteProcess,
+ OtherProcess,
+ };
+
+ // Determine the process type based on command-line arguments.
+ static ProcessType GetProcessType(CefRefPtr<CefCommandLine> command_line);
+
+ protected:
+ // Schemes that will be registered with the global cookie manager.
+ std::vector<CefString> cookieable_schemes_;
+
+ private:
+ // Registers custom schemes. Implemented by cefclient in
+ // client_app_delegates_common.cc
+ static void RegisterCustomSchemes(CefRawPtr<CefSchemeRegistrar> registrar,
+ std::vector<CefString>& cookiable_schemes);
+
+ // CefApp methods.
+ void OnRegisterCustomSchemes(
+ CefRawPtr<CefSchemeRegistrar> registrar) OVERRIDE;
+
+ DISALLOW_COPY_AND_ASSIGN(ClientApp);
+};
+
+} // namespace client
+
+#endif // CEF_TESTS_SHARED_COMMON_CLIENT_APP_H_