1// Copyright 2013 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#ifndef CHROME_BROWSER_EXTENSIONS_API_MESSAGING_MESSAGE_PROPERTY_PROVIDER_H_ 6#define CHROME_BROWSER_EXTENSIONS_API_MESSAGING_MESSAGE_PROPERTY_PROVIDER_H_ 7 8#include <string> 9 10#include "base/callback.h" 11 12class GURL; 13class Profile; 14 15namespace base { 16class TaskRunner; 17} 18 19namespace net { 20class URLRequestContextGetter; 21} 22 23namespace extensions { 24 25// This class provides properties of messages asynchronously. 26class MessagePropertyProvider { 27 public: 28 MessagePropertyProvider(); 29 30 typedef base::Callback<void(const std::string&)> ChannelIDCallback; 31 32 // Gets the DER-encoded public key of the domain-bound cert, 33 // aka TLS channel ID, for the given URL. 34 // Runs |reply| on the current message loop. 35 void GetChannelID(Profile* profile, 36 const GURL& source_url, 37 const ChannelIDCallback& reply); 38 39 private: 40 struct GetChannelIDOutput; 41 42 static void GetChannelIDOnIOThread( 43 scoped_refptr<base::TaskRunner> original_task_runner, 44 scoped_refptr<net::URLRequestContextGetter> request_context_getter, 45 const std::string& host, 46 const ChannelIDCallback& reply); 47 48 static void GotChannelID( 49 scoped_refptr<base::TaskRunner> original_task_runner, 50 struct GetChannelIDOutput* output, 51 const ChannelIDCallback& reply, 52 int status); 53 54 DISALLOW_COPY_AND_ASSIGN(MessagePropertyProvider); 55}; 56 57} // namespace extensions 58 59#endif // CHROME_BROWSER_EXTENSIONS_API_MESSAGING_MESSAGE_PROPERTY_PROVIDER_H_ 60