15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 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 "content/shell/geolocation/shell_access_token_store.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind.h"
89ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h"
9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/browser/browser_thread.h"
113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "content/shell/browser/shell_browser_context.h"
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace content {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ShellAccessTokenStore::ShellAccessTokenStore(
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    content::ShellBrowserContext* shell_browser_context)
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    : shell_browser_context_(shell_browser_context),
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      system_request_context_(NULL) {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ShellAccessTokenStore::~ShellAccessTokenStore() {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ShellAccessTokenStore::LoadAccessTokens(
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const LoadAccessTokensCallbackType& callback) {
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  BrowserThread::PostTaskAndReply(
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      BrowserThread::UI,
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      FROM_HERE,
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      base::Bind(&ShellAccessTokenStore::GetRequestContextOnUIThread,
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                 this,
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                 shell_browser_context_),
32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      base::Bind(&ShellAccessTokenStore::RespondOnOriginatingThread,
33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                 this,
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                 callback));
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void ShellAccessTokenStore::GetRequestContextOnUIThread(
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    content::ShellBrowserContext* shell_browser_context) {
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  system_request_context_ = shell_browser_context->GetRequestContext();
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void ShellAccessTokenStore::RespondOnOriginatingThread(
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const LoadAccessTokensCallbackType& callback) {
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Since content_shell is a test executable, rather than an end user program,
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // we provide a dummy access_token set to avoid hitting the server.
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AccessTokenSet access_token_set;
475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  access_token_set[GURL()] = base::ASCIIToUTF16("chromium_content_shell");
48010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  callback.Run(access_token_set, system_request_context_.get());
49010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  system_request_context_ = NULL;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ShellAccessTokenStore::SaveAccessToken(
53a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    const GURL& server_url, const base::string16& access_token) {
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}  // namespace content
57