15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// found in the LICENSE file.
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "content/shell/geolocation/shell_access_token_store.h"
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "base/bind.h"
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "base/message_loop/message_loop.h"
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "base/strings/utf_string_conversions.h"
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "content/public/browser/browser_thread.h"
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "content/shell/browser/shell_browser_context.h"
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace content {
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)ShellAccessTokenStore::ShellAccessTokenStore(
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    content::ShellBrowserContext* shell_browser_context)
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    : shell_browser_context_(shell_browser_context),
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)      system_request_context_(NULL) {
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)ShellAccessTokenStore::~ShellAccessTokenStore() {
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void ShellAccessTokenStore::LoadAccessTokens(
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    const LoadAccessTokensCallbackType& callback) {
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  BrowserThread::PostTaskAndReply(
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)      BrowserThread::UI,
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)      FROM_HERE,
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)      base::Bind(&ShellAccessTokenStore::GetRequestContextOnUIThread,
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                 this,
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                 shell_browser_context_),
325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)      base::Bind(&ShellAccessTokenStore::RespondOnOriginatingThread,
3306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)                 this,
345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                 callback));
3551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)}
3606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)
37bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)void ShellAccessTokenStore::GetRequestContextOnUIThread(
3853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)    content::ShellBrowserContext* shell_browser_context) {
3953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)  system_request_context_ = shell_browser_context->GetRequestContext();
401e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)}
41e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void ShellAccessTokenStore::RespondOnOriginatingThread(
435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    const LoadAccessTokensCallbackType& callback) {
445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  // Since content_shell is a test executable, rather than an end user program,
45bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)  // we provide a dummy access_token set to avoid hitting the server.
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  AccessTokenSet access_token_set;
47c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)  access_token_set[GURL()] = base::ASCIIToUTF16("chromium_content_shell");
485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  callback.Run(access_token_set, system_request_context_.get());
495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)  system_request_context_ = NULL;
505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
5251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)void ShellAccessTokenStore::SaveAccessToken(
535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    const GURL& server_url, const base::string16& access_token) {
545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}  // namespace content
57bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)