1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_SIGNIN_SIGNIN_HEADER_HELPER_H_
6#define CHROME_BROWSER_SIGNIN_SIGNIN_HEADER_HELPER_H_
7
8namespace net {
9class URLRequest;
10}
11class GURL;
12class ProfileIOData;
13
14// Utility functions for handling Chrome/Gaia headers during signin process.
15// In the Mirror world, Chrome identity should always stay in sync with Gaia
16// identity. Therefore Chrome needs to send Gaia special header for requests
17// from a connected profile, so that Gaia can modify its response accordingly
18// and let Chrome handles signin with native UI.
19namespace signin {
20
21// Add X-Chrome-Connected header to all Gaia requests from a connected profile,
22// with the exception of requests from gaia webview. Must be called on IO
23// thread.
24void AppendMirrorRequestHeaderIfPossible(
25    net::URLRequest* request,
26    const GURL& redirect_url,
27    ProfileIOData* io_data,
28    int child_id,
29    int route_id);
30
31// Looks for the X-Chrome-Manage-Accounts response header, and if found,
32// tries to show the avatar bubble in the browser identified by the
33// child/route id. Must be called on IO thread.
34void ProcessMirrorResponseHeaderIfExists(
35    net::URLRequest* request,
36    ProfileIOData* io_data,
37    int child_id,
38    int route_id);
39
40};  // namespace signin
41
42#endif  // CHROME_BROWSER_SIGNIN_SIGNIN_HEADER_HELPER_H_
43