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