File: browser_state_context_converter.h

package info (click to toggle)
chromium-browser 57.0.2987.98-1~deb8u1
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 2,637,852 kB
  • ctags: 2,544,394
  • sloc: cpp: 12,815,961; ansic: 3,676,222; python: 1,147,112; asm: 526,608; java: 523,212; xml: 286,794; perl: 92,654; sh: 86,408; objc: 73,271; makefile: 27,698; cs: 18,487; yacc: 13,031; tcl: 12,957; pascal: 4,875; ml: 4,716; lex: 3,904; sql: 3,862; ruby: 1,982; lisp: 1,508; php: 1,368; exp: 404; awk: 325; csh: 117; jsp: 39; sed: 37
file content (55 lines) | stat: -rw-r--r-- 2,283 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// Copyright 2014 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 COMPONENTS_KEYED_SERVICE_IOS_BROWSER_STATE_CONTEXT_CONVERTER_H_
#define COMPONENTS_KEYED_SERVICE_IOS_BROWSER_STATE_CONTEXT_CONVERTER_H_

#include "base/macros.h"

namespace base {
class SupportsUserData;
}

// BrowserStateContextConverter does safe conversion of base::SupportsUserData*
// to web::BrowserState* or content::BrowserContext*.
//
// iOS code is still using BrowserContextKeyedServiceFactory and until the
// conversion is complete — http://crbug.com/478763 — there is need to have
// mixed dependency between BCKSF and BSKSF.
//
// The implementation has BrowserStateKeyedServiceFactory supporting a
// BrowserContextDependencyManager as DependencyManager. Thus the context
// parameter passed to the BrowserStateKeyedServiceFactory can either be
// content::BrowserContext if the method is invoked by DependencyManager
// or web::BrowserState if the method is invoked via the type-safe public
// API.
//
// The public API of BrowserStateKeyedServiceFactory is type-safe (all
// public method receive web::BrowserState for context object), so only
// methods that take a base::SupportsUserData need to discriminate
// between the two objects.
class BrowserStateContextConverter {
 public:
  // Sets/Gets the global BrowserStateContextConverter instance. May return null
  // when mixed dependencies are disabled.
  static void SetInstance(BrowserStateContextConverter* instance);
  static BrowserStateContextConverter* GetInstance();

  // Converts |context| to a web::BrowserState* and returns it casted as a
  // base::SupportsUserData*.
  virtual base::SupportsUserData* GetBrowserStateForContext(
      base::SupportsUserData* context) = 0;
  // Converts |context| to a content::BrowserContext* and returns it casted as a
  // base::SupportsUserData*.
  virtual base::SupportsUserData* GetBrowserContextForContext(
      base::SupportsUserData* context) = 0;

 protected:
  BrowserStateContextConverter();
  virtual ~BrowserStateContextConverter();

  DISALLOW_COPY_AND_ASSIGN(BrowserStateContextConverter);
};

#endif  // COMPONENTS_KEYED_SERVICE_IOS_BROWSER_STATE_CONTEXT_CONVERTER_H_