Commit ebb08805 authored by lazyboy's avatar lazyboy Committed by Commit bot

Make ExtensionIconSet::ContainsPath use StringPiece.

Also update callers to use better way to construct the path using
StringPiece-s, avoiding string copy (GURL::path()) and substring
copy (std::string::substr(1)).

Move ExtensionIconSet's unittest to extensions/

BUG=None

Review-Url: https://codereview.chromium.org/2626923002
Cr-Commit-Position: refs/heads/master@{#443032}
parent a3d1d625
......@@ -54,9 +54,9 @@ bool ResourceRequestPolicy::CanRequestResource(
// hybrid hosted/packaged apps. The one exception is access to icons, since
// some extensions want to be able to do things like create their own
// launchers.
std::string resource_root_relative_path =
resource_url.path().empty() ? std::string()
: resource_url.path().substr(1);
base::StringPiece resource_root_relative_path =
resource_url.path_piece().empty() ? base::StringPiece()
: resource_url.path_piece().substr(1);
if (extension->is_hosted_app() &&
!IconsInfo::GetIcons(extension)
.ContainsPath(resource_root_relative_path)) {
......
......@@ -4009,7 +4009,6 @@ test("unit_tests") {
"../common/extensions/chrome_extensions_client_unittest.cc",
"../common/extensions/chrome_manifest_url_handlers_unittest.cc",
"../common/extensions/command_unittest.cc",
"../common/extensions/extension_icon_set_unittest.cc",
"../common/extensions/extension_unittest.cc",
"../common/extensions/feature_switch_unittest.cc",
"../common/extensions/manifest_handlers/automation_unittest.cc",
......
......@@ -393,11 +393,12 @@ bool URLIsForExtensionIcon(const GURL& url, const Extension* extension) {
if (!extension)
return false;
std::string path = url.path();
DCHECK_EQ(url.host(), extension->id());
base::StringPiece path = url.path_piece();
DCHECK(path.length() > 0 && path[0] == '/');
path = path.substr(1);
return extensions::IconsInfo::GetIcons(extension).ContainsPath(path);
base::StringPiece path_without_slash = path.substr(1);
return extensions::IconsInfo::GetIcons(extension).ContainsPath(
path_without_slash);
}
class ExtensionProtocolHandler
......
......@@ -67,9 +67,10 @@ bool AllowCrossRendererResourceLoad(net::URLRequest* request,
// hybrid hosted/packaged apps. The one exception is access to icons, since
// some extensions want to be able to do things like create their own
// launchers.
std::string resource_root_relative_path =
request->url().path().empty() ? std::string()
: request->url().path().substr(1);
base::StringPiece resource_root_relative_path =
request->url().path_piece().empty()
? base::StringPiece()
: request->url().path_piece().substr(1);
if (extension->is_hosted_app() &&
!IconsInfo::GetIcons(extension)
.ContainsPath(resource_root_relative_path)) {
......
......@@ -308,6 +308,7 @@ if (enable_extensions) {
"api/sockets/sockets_manifest_permission_unittest.cc",
"csp_validator_unittest.cc",
"event_filter_unittest.cc",
"extension_icon_set_unittest.cc",
"extension_l10n_util_unittest.cc",
"extension_messages_unittest.cc",
"extension_resource_unittest.cc",
......
......@@ -53,11 +53,11 @@ const std::string& ExtensionIconSet::Get(int size, MatchType match_type) const {
}
}
bool ExtensionIconSet::ContainsPath(const std::string& path) const {
bool ExtensionIconSet::ContainsPath(base::StringPiece path) const {
return GetIconSizeFromPath(path) != 0;
}
int ExtensionIconSet::GetIconSizeFromPath(const std::string& path) const {
int ExtensionIconSet::GetIconSizeFromPath(base::StringPiece path) const {
if (path.empty())
return 0;
......
......@@ -9,6 +9,8 @@
#include <set>
#include <string>
#include "base/strings/string_piece.h"
namespace base {
class FilePath;
}
......@@ -46,10 +48,10 @@ class ExtensionIconSet {
const std::string& Get(int size, MatchType match_type) const;
// Returns true iff the set contains the specified path.
bool ContainsPath(const std::string& path) const;
bool ContainsPath(base::StringPiece path) const;
// Returns icon size if the set contains the specified path or 0 if not found.
int GetIconSizeFromPath(const std::string& path) const;
int GetIconSizeFromPath(base::StringPiece path) const;
// Add the paths of all icons in this set into |paths|, handling the
// conversion of (string) -> (base::FilePath). Note that these paths are not
......
......@@ -9,7 +9,7 @@
namespace {
TEST(ExtensionIconSet, Basic) {
TEST(ExtensionIconSetTest, Basic) {
ExtensionIconSet icons;
EXPECT_EQ("", icons.Get(extension_misc::EXTENSION_ICON_LARGE,
ExtensionIconSet::MATCH_EXACTLY));
......@@ -52,7 +52,7 @@ TEST(ExtensionIconSet, Basic) {
ExtensionIconSet::MATCH_BIGGER));
}
TEST(ExtensionIconSet, Values) {
TEST(ExtensionIconSetTest, Values) {
ExtensionIconSet icons;
EXPECT_FALSE(icons.ContainsPath("foo"));
......@@ -68,7 +68,7 @@ TEST(ExtensionIconSet, Values) {
EXPECT_FALSE(icons.ContainsPath("foo"));
}
TEST(ExtensionIconSet, FindSize) {
TEST(ExtensionIconSetTest, FindSize) {
ExtensionIconSet icons;
EXPECT_EQ(extension_misc::EXTENSION_ICON_INVALID,
icons.GetIconSizeFromPath("foo"));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment