1// Copyright 2014 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#include "chromecast/shell/browser/geolocation/cast_access_token_store.h"
6
7#include "base/callback_helpers.h"
8#include "chromecast/shell/browser/cast_browser_context.h"
9#include "chromecast/shell/browser/cast_content_browser_client.h"
10#include "content/public/browser/browser_thread.h"
11#include "content/public/common/content_client.h"
12
13namespace chromecast {
14namespace shell {
15
16CastAccessTokenStore::CastAccessTokenStore(
17    content::BrowserContext* browser_context)
18    : browser_context_(browser_context) {
19}
20
21CastAccessTokenStore::~CastAccessTokenStore() {
22}
23
24void CastAccessTokenStore::GetRequestContextGetterOnUIThread() {
25  request_context_ = browser_context_->GetRequestContext();
26}
27
28void CastAccessTokenStore::RespondOnOriginatingThread() {
29  base::ResetAndReturn(&callback_).Run(access_token_set_, request_context_);
30}
31
32void CastAccessTokenStore::LoadAccessTokens(
33    const LoadAccessTokensCallbackType& callback) {
34  callback_ = callback;
35  content::BrowserThread::PostTaskAndReply(
36      content::BrowserThread::UI,
37      FROM_HERE,
38      base::Bind(&CastAccessTokenStore::GetRequestContextGetterOnUIThread,
39                 this),
40      base::Bind(&CastAccessTokenStore::RespondOnOriginatingThread, this));
41}
42
43void CastAccessTokenStore::SaveAccessToken(
44    const GURL& server_url, const base::string16& access_token) {
45  if (access_token_set_[server_url] != access_token) {
46    access_token_set_[server_url] = access_token;
47  }
48}
49
50}  // namespace shell
51}  // namespace chromecast
52