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( ...@@ -54,9 +54,9 @@ bool ResourceRequestPolicy::CanRequestResource(
// hybrid hosted/packaged apps. The one exception is access to icons, since // 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 // some extensions want to be able to do things like create their own
// launchers. // launchers.
std::string resource_root_relative_path = base::StringPiece resource_root_relative_path =
resource_url.path().empty() ? std::string() resource_url.path_piece().empty() ? base::StringPiece()
: resource_url.path().substr(1); : resource_url.path_piece().substr(1);
if (extension->is_hosted_app() && if (extension->is_hosted_app() &&
!IconsInfo::GetIcons(extension) !IconsInfo::GetIcons(extension)
.ContainsPath(resource_root_relative_path)) { .ContainsPath(resource_root_relative_path)) {
......
...@@ -4009,7 +4009,6 @@ test("unit_tests") { ...@@ -4009,7 +4009,6 @@ test("unit_tests") {
"../common/extensions/chrome_extensions_client_unittest.cc", "../common/extensions/chrome_extensions_client_unittest.cc",
"../common/extensions/chrome_manifest_url_handlers_unittest.cc", "../common/extensions/chrome_manifest_url_handlers_unittest.cc",
"../common/extensions/command_unittest.cc", "../common/extensions/command_unittest.cc",
"../common/extensions/extension_icon_set_unittest.cc",
"../common/extensions/extension_unittest.cc", "../common/extensions/extension_unittest.cc",
"../common/extensions/feature_switch_unittest.cc", "../common/extensions/feature_switch_unittest.cc",
"../common/extensions/manifest_handlers/automation_unittest.cc", "../common/extensions/manifest_handlers/automation_unittest.cc",
......
...@@ -393,11 +393,12 @@ bool URLIsForExtensionIcon(const GURL& url, const Extension* extension) { ...@@ -393,11 +393,12 @@ bool URLIsForExtensionIcon(const GURL& url, const Extension* extension) {
if (!extension) if (!extension)
return false; return false;
std::string path = url.path();
DCHECK_EQ(url.host(), extension->id()); DCHECK_EQ(url.host(), extension->id());
base::StringPiece path = url.path_piece();
DCHECK(path.length() > 0 && path[0] == '/'); DCHECK(path.length() > 0 && path[0] == '/');
path = path.substr(1); base::StringPiece path_without_slash = path.substr(1);
return extensions::IconsInfo::GetIcons(extension).ContainsPath(path); return extensions::IconsInfo::GetIcons(extension).ContainsPath(
path_without_slash);
} }
class ExtensionProtocolHandler class ExtensionProtocolHandler
......
...@@ -67,9 +67,10 @@ bool AllowCrossRendererResourceLoad(net::URLRequest* request, ...@@ -67,9 +67,10 @@ bool AllowCrossRendererResourceLoad(net::URLRequest* request,
// hybrid hosted/packaged apps. The one exception is access to icons, since // 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 // some extensions want to be able to do things like create their own
// launchers. // launchers.
std::string resource_root_relative_path = base::StringPiece resource_root_relative_path =
request->url().path().empty() ? std::string() request->url().path_piece().empty()
: request->url().path().substr(1); ? base::StringPiece()
: request->url().path_piece().substr(1);
if (extension->is_hosted_app() && if (extension->is_hosted_app() &&
!IconsInfo::GetIcons(extension) !IconsInfo::GetIcons(extension)
.ContainsPath(resource_root_relative_path)) { .ContainsPath(resource_root_relative_path)) {
......
...@@ -308,6 +308,7 @@ if (enable_extensions) { ...@@ -308,6 +308,7 @@ if (enable_extensions) {
"api/sockets/sockets_manifest_permission_unittest.cc", "api/sockets/sockets_manifest_permission_unittest.cc",
"csp_validator_unittest.cc", "csp_validator_unittest.cc",
"event_filter_unittest.cc", "event_filter_unittest.cc",
"extension_icon_set_unittest.cc",
"extension_l10n_util_unittest.cc", "extension_l10n_util_unittest.cc",
"extension_messages_unittest.cc", "extension_messages_unittest.cc",
"extension_resource_unittest.cc", "extension_resource_unittest.cc",
......
...@@ -53,11 +53,11 @@ const std::string& ExtensionIconSet::Get(int size, MatchType match_type) const { ...@@ -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; return GetIconSizeFromPath(path) != 0;
} }
int ExtensionIconSet::GetIconSizeFromPath(const std::string& path) const { int ExtensionIconSet::GetIconSizeFromPath(base::StringPiece path) const {
if (path.empty()) if (path.empty())
return 0; return 0;
......
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
#include <set> #include <set>
#include <string> #include <string>
#include "base/strings/string_piece.h"
namespace base { namespace base {
class FilePath; class FilePath;
} }
...@@ -46,10 +48,10 @@ class ExtensionIconSet { ...@@ -46,10 +48,10 @@ class ExtensionIconSet {
const std::string& Get(int size, MatchType match_type) const; const std::string& Get(int size, MatchType match_type) const;
// Returns true iff the set contains the specified path. // 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. // 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 // Add the paths of all icons in this set into |paths|, handling the
// conversion of (string) -> (base::FilePath). Note that these paths are not // conversion of (string) -> (base::FilePath). Note that these paths are not
......
...@@ -9,14 +9,14 @@ ...@@ -9,14 +9,14 @@
namespace { namespace {
TEST(ExtensionIconSet, Basic) { TEST(ExtensionIconSetTest, Basic) {
ExtensionIconSet icons; ExtensionIconSet icons;
EXPECT_EQ("", icons.Get(extension_misc::EXTENSION_ICON_LARGE, EXPECT_EQ("", icons.Get(extension_misc::EXTENSION_ICON_LARGE,
ExtensionIconSet::MATCH_EXACTLY)); ExtensionIconSet::MATCH_EXACTLY));
EXPECT_EQ("", icons.Get(extension_misc::EXTENSION_ICON_LARGE, EXPECT_EQ("", icons.Get(extension_misc::EXTENSION_ICON_LARGE,
ExtensionIconSet::MATCH_BIGGER)); ExtensionIconSet::MATCH_BIGGER));
EXPECT_EQ("", icons.Get(extension_misc::EXTENSION_ICON_LARGE, EXPECT_EQ("", icons.Get(extension_misc::EXTENSION_ICON_LARGE,
ExtensionIconSet::MATCH_SMALLER)); ExtensionIconSet::MATCH_SMALLER));
EXPECT_TRUE(icons.map().empty()); EXPECT_TRUE(icons.map().empty());
icons.Add(extension_misc::EXTENSION_ICON_LARGE, "large.png"); icons.Add(extension_misc::EXTENSION_ICON_LARGE, "large.png");
...@@ -52,7 +52,7 @@ TEST(ExtensionIconSet, Basic) { ...@@ -52,7 +52,7 @@ TEST(ExtensionIconSet, Basic) {
ExtensionIconSet::MATCH_BIGGER)); ExtensionIconSet::MATCH_BIGGER));
} }
TEST(ExtensionIconSet, Values) { TEST(ExtensionIconSetTest, Values) {
ExtensionIconSet icons; ExtensionIconSet icons;
EXPECT_FALSE(icons.ContainsPath("foo")); EXPECT_FALSE(icons.ContainsPath("foo"));
...@@ -68,7 +68,7 @@ TEST(ExtensionIconSet, Values) { ...@@ -68,7 +68,7 @@ TEST(ExtensionIconSet, Values) {
EXPECT_FALSE(icons.ContainsPath("foo")); EXPECT_FALSE(icons.ContainsPath("foo"));
} }
TEST(ExtensionIconSet, FindSize) { TEST(ExtensionIconSetTest, FindSize) {
ExtensionIconSet icons; ExtensionIconSet icons;
EXPECT_EQ(extension_misc::EXTENSION_ICON_INVALID, EXPECT_EQ(extension_misc::EXTENSION_ICON_INVALID,
icons.GetIconSizeFromPath("foo")); 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