| Index: chrome/browser/instant/instant_io_context.h
|
| diff --git a/chrome/browser/instant/instant_io_context.h b/chrome/browser/instant/instant_io_context.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..26b9a562a9c3ed5b0e1ad6a49d50a68c515acc3f
|
| --- /dev/null
|
| +++ b/chrome/browser/instant/instant_io_context.h
|
| @@ -0,0 +1,71 @@
|
| +// 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.
|
| +
|
| +#ifndef CHROME_BROWSER_INSTANT_INSTANT_IO_CONTEXT_
|
| +#define CHROME_BROWSER_INSTANT_INSTANT_IO_CONTEXT_
|
| +
|
| +#include <set>
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "base/memory/ref_counted.h"
|
| +
|
| +namespace content {
|
| +class ResourceContext;
|
| +}
|
| +
|
| +namespace net {
|
| +class URLRequest;
|
| +}
|
| +
|
| +// IO thread data held for Instant. This reflects the data held in
|
| +// InstantService for use on the IO thread. Owned by ResourceContext
|
| +// as user data.
|
| +class InstantIOContext : public base::RefCountedThreadSafe<InstantIOContext> {
|
| + public:
|
| + InstantIOContext();
|
| +
|
| + // Key name for context UserData. UserData is created by InstantService
|
| + // but accessed by InstantIOContext.
|
| + static const char kInstantIOContextKeyName[];
|
| +
|
| + // Installs the |instant_io_context| into the UserData of the
|
| + // |resource_context|.
|
| + static void SetUserDataOnIO(
|
| + content::ResourceContext* resource_context,
|
| + scoped_refptr<InstantIOContext> instant_io_context);
|
| +
|
| + // Add and remove RenderProcessHost IDs that are associated with Instant
|
| + // processes. Used to keep process IDs in sync with InstantService.
|
| + static void AddInstantProcessOnIO(
|
| + scoped_refptr<InstantIOContext> instant_io_context,
|
| + int process_id);
|
| + static void RemoveInstantProcessOnIO(
|
| + scoped_refptr<InstantIOContext> instant_io_context,
|
| + int process_id);
|
| + static void ClearInstantProcessesOnIO(
|
| + scoped_refptr<InstantIOContext> instant_io_context);
|
| +
|
| + // Determine if this chrome-search: request is coming from an Instant render
|
| + // process.
|
| + static bool ShouldServiceRequest(const net::URLRequest* request);
|
| +
|
| + protected:
|
| + virtual ~InstantIOContext();
|
| +
|
| + private:
|
| + friend class base::RefCountedThreadSafe<InstantIOContext>;
|
| +
|
| + // Check that |process_id| is in the known set of Instant processes, ie.
|
| + // |process_ids_|.
|
| + bool IsInstantProcess(int process_id) const;
|
| +
|
| + // The process IDs associated with Instant processes. Mirror of the process
|
| + // IDs in InstantService. Duplicated here for synchronous access on the IO
|
| + // thread.
|
| + std::set<int> process_ids_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(InstantIOContext);
|
| +};
|
| +
|
| +#endif // CHROME_BROWSER_INSTANT_INSTANT_IO_CONTEXT_
|
|
|