cast_access_token_store.cc revision 116680a4aac90f2aa7413d9095a592090648e557
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromecast/shell/browser/geolocation/cast_access_token_store.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/callback_helpers.h"
8d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "chromecast/shell/browser/cast_browser_context.h"
95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chromecast/shell/browser/cast_content_browser_client.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/browser_thread.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/content_client.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromecast {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace shell {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CastAccessTokenStore::CastAccessTokenStore(
175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    content::BrowserContext* browser_context)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : browser_context_(browser_context) {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CastAccessTokenStore::~CastAccessTokenStore() {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void CastAccessTokenStore::GetRequestContextGetterOnUIThread() {
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  request_context_ = browser_context_->GetRequestContext();
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void CastAccessTokenStore::RespondOnOriginatingThread() {
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::ResetAndReturn(&callback_).Run(access_token_set_, request_context_);
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void CastAccessTokenStore::LoadAccessTokens(
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const LoadAccessTokensCallbackType& callback) {
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  callback_ = callback;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content::BrowserThread::PostTaskAndReply(
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      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