| 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_
 | 
| 
 |