summaryrefslogtreecommitdiffstats
path: root/net/base
diff options
context:
space:
mode:
authordeanm@chromium.org <deanm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-20 01:08:17 +0000
committerdeanm@chromium.org <deanm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-20 01:08:17 +0000
commit73f5d66b06b9a02626a8addecb24986a88430176 (patch)
treed7348008e89272c3ad907c6a01b94e7e8960a0a4 /net/base
parentb1412de10508641134801305b47c8f7255ac2280 (diff)
downloadchromium_src-73f5d66b06b9a02626a8addecb24986a88430176.zip
chromium_src-73f5d66b06b9a02626a8addecb24986a88430176.tar.gz
chromium_src-73f5d66b06b9a02626a8addecb24986a88430176.tar.bz2
Make the net resource interface use StringPiece instead of std::string. This means we can point directly into the resource in the binary, instead of copying. This makes sense for the TLD data, which doesn't need to be copied around.
Review URL: http://codereview.chromium.org/11506 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@5740 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base')
-rw-r--r--net/base/net_module.cc4
-rw-r--r--net/base/net_module.h5
-rw-r--r--net/base/net_util.cc5
-rw-r--r--net/base/registry_controlled_domain.cc2
4 files changed, 9 insertions, 7 deletions
diff --git a/net/base/net_module.cc b/net/base/net_module.cc
index d54a0a4..7c3f9c1 100644
--- a/net/base/net_module.cc
+++ b/net/base/net_module.cc
@@ -14,10 +14,10 @@ void NetModule::SetResourceProvider(ResourceProvider func) {
}
// static
-std::string NetModule::GetResource(int key) {
+StringPiece NetModule::GetResource(int key) {
// avoid thread safety issues by copying provider address to a local var
ResourceProvider func = resource_provider;
- return func ? func(key) : std::string();
+ return func ? func(key) : StringPiece();
}
} // namespace net
diff --git a/net/base/net_module.h b/net/base/net_module.h
index ef309ff..e527b9f 100644
--- a/net/base/net_module.h
+++ b/net/base/net_module.h
@@ -8,6 +8,7 @@
#include <string>
#include "base/basictypes.h"
+#include "base/string_piece.h"
namespace net {
@@ -20,7 +21,7 @@ namespace net {
//
class NetModule {
public:
- typedef std::string (*ResourceProvider)(int key);
+ typedef StringPiece (*ResourceProvider)(int key);
// Set the function to call when the net module needs resources
static void SetResourceProvider(ResourceProvider func);
@@ -28,7 +29,7 @@ class NetModule {
// Call the resource provider (if one exists) to get the specified resource.
// Returns an empty string if the resource does not exist or if there is no
// resource provider.
- static std::string GetResource(int key);
+ static StringPiece GetResource(int key);
private:
DISALLOW_IMPLICIT_CONSTRUCTORS(NetModule);
diff --git a/net/base/net_util.cc b/net/base/net_util.cc
index 05419fb..1617d85 100644
--- a/net/base/net_util.cc
+++ b/net/base/net_util.cc
@@ -800,11 +800,12 @@ std::string CanonicalizeHost(const std::wstring& host, bool* is_ip_address) {
#ifdef OS_WIN
std::string GetDirectoryListingHeader(const std::string& title) {
- std::string result = NetModule::GetResource(IDR_DIR_HEADER_HTML);
- if (result.empty()) {
+ static const StringPiece header(NetModule::GetResource(IDR_DIR_HEADER_HTML));
+ if (header.empty()) {
NOTREACHED() << "expected resource not found";
}
+ std::string result(header.data(), header.size());
result.append("<script>start(");
string_escape::JavascriptDoubleQuote(title, true, &result);
result.append(");</script>\n");
diff --git a/net/base/registry_controlled_domain.cc b/net/base/registry_controlled_domain.cc
index 3f4f024..f98a3f3 100644
--- a/net/base/registry_controlled_domain.cc
+++ b/net/base/registry_controlled_domain.cc
@@ -296,7 +296,7 @@ void RegistryControlledDomainService::UseDomainData(const std::string& data) {
}
void RegistryControlledDomainService::Init() {
- domain_data_ = NetModule::GetResource(IDR_EFFECTIVE_TLD_NAMES);
+ domain_data_ = NetModule::GetResource(IDR_EFFECTIVE_TLD_NAMES).as_string();
if (domain_data_.empty()) {
// The resource file isn't present for some unit tests, for example. Fall
// back to a tiny, basic list of rules in that case.