1c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Use of this source code is governed by a BSD-style license that can be 3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// found in the LICENSE file. 4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#ifndef NET_BASE_NET_MODULE_H__ 6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define NET_BASE_NET_MODULE_H__ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 9c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/basictypes.h" 10c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/string_piece.h" 11c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottnamespace net { 13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 14c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Defines global initializers and associated methods for the net module. 15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// 16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// The network module does not have direct access to the way application 17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// resources are stored and fetched by the embedding application (e.g., it 18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// cannot see the ResourceBundle class used by Chrome), so it uses this API to 19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// get access to such resources. 20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// 21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottclass NetModule { 22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott public: 23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott typedef base::StringPiece (*ResourceProvider)(int key); 24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 25c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Set the function to call when the net module needs resources 26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott static void SetResourceProvider(ResourceProvider func); 27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Call the resource provider (if one exists) to get the specified resource. 29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Returns an empty string if the resource does not exist or if there is no 30c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // resource provider. 31c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott static base::StringPiece GetResource(int key); 32c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott private: 34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott DISALLOW_IMPLICIT_CONSTRUCTORS(NetModule); 35c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}; 36c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 37c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} // namespace net 38c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 39c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif // NET_BASE_NET_MODULE_H__ 40