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