| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/basictypes.h" |
| #include "chrome/common/instant_types.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "url/gurl.h" |
| |
| namespace internal { |
| |
| // Defined in searchbox.cc |
| bool GetRestrictedIDFromThumbnailUrl(int render_view_id, |
| const GURL& url, |
| InstantRestrictedID* id); |
| |
| // Defined in searchbox.cc |
| bool GetRestrictedIDFromFaviconUrl(int render_view_id, |
| const GURL& url, |
| std::string* favicon_params, |
| InstantRestrictedID* rid); |
| |
| TEST(SearchBoxUtilTest, GetInstantRestrictedIDFromTransientURL) { |
| const int kInvalidRenderViewID = 920; |
| const int kValidRenderViewID = 1; |
| |
| const struct { |
| int render_view_id; |
| GURL transient_url; |
| InstantRestrictedID expected_rid; |
| bool expected_return_val; |
| } test_cases[] = { |
| // RenderView ID matches the view id specified in the transient url. |
| {kValidRenderViewID, GURL("chrome-search://favicon/1/2"), 2, true}, |
| {kValidRenderViewID, GURL("chrome-search://thumb/1/2"), 2, true}, |
| |
| // RenderView ID does not match the view id specified in the transient url. |
| {kInvalidRenderViewID, GURL("chrome-search://favicon/1/2"), 0, false}, |
| {kInvalidRenderViewID, GURL("chrome-search://thumb/1/2"), 0, false}, |
| |
| // Invalid transient urls. |
| {kValidRenderViewID, GURL("chrome-search://thumb"), 0, false}, |
| {kValidRenderViewID, GURL("chrome-search://thumb/"), 0, false}, |
| {kValidRenderViewID, GURL("chrome-search://thumb/123"), 0, false}, |
| {kValidRenderViewID, GURL("chrome-search://thumb/xyz"), 0, false}, |
| {kValidRenderViewID, GURL("chrome-search://thumb/123/"), 0, false}, |
| {kValidRenderViewID, GURL("chrome-search://thumb/123/xyz"), 0, false}, |
| {kValidRenderViewID, GURL("chrome-search://favicon"), 0, false}, |
| {kValidRenderViewID, GURL("chrome-search://favicon/"), 0, false}, |
| {kValidRenderViewID, GURL("chrome-search://favicon/123"), 0, false}, |
| {kValidRenderViewID, GURL("chrome-search://favicon/xyz"), 0, false}, |
| {kValidRenderViewID, GURL("chrome-search://favicon/123/"), 0, false}, |
| {kValidRenderViewID, GURL("chrome-search://favicon/123/xyz"), 0, false} |
| }; |
| |
| InstantRestrictedID rid = 0; |
| for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) { |
| bool return_val = GetRestrictedIDFromThumbnailUrl( |
| test_cases[i].render_view_id, test_cases[i].transient_url, &rid); |
| EXPECT_EQ(test_cases[i].expected_return_val, return_val); |
| EXPECT_EQ(test_cases[i].expected_rid, rid); |
| rid = 0; |
| } |
| } |
| |
| TEST(SearchBoxUtilTest, ParseRestrictedFaviconTransientUrl) { |
| const int kInvalidRenderViewID = 920; |
| const int kValidRenderViewID = 1; |
| |
| const struct { |
| int render_view_id; |
| GURL transient_url; |
| std::string expected_favicon_params; |
| InstantRestrictedID expected_rid; |
| bool expected_return_val; |
| } test_cases[] = { |
| // RenderView ID matches the view id specified in the transient url. |
| { |
| kValidRenderViewID, |
| GURL("chrome-search://favicon/1/2"), |
| "", |
| 2, |
| true |
| }, |
| { |
| kValidRenderViewID, |
| GURL("chrome-search://favicon/size/16@2x/1/2"), |
| "size/16@2x/", |
| 2, |
| true |
| }, |
| { |
| kValidRenderViewID, |
| GURL("chrome-search://favicon/largest/1/2"), |
| "largest/", |
| 2, |
| true |
| }, |
| { |
| kValidRenderViewID, |
| GURL("chrome-search://favicon/origin/1/2"), |
| "origin/", |
| 2, |
| true |
| }, |
| { |
| kValidRenderViewID, |
| GURL("chrome-search://favicon/iconurl/1/2"), |
| "iconurl/", |
| 2, |
| true |
| }, |
| |
| // RenderView ID does not match the view id specified in the transient url. |
| { |
| kInvalidRenderViewID, |
| GURL("chrome-search://favicon/1/2"), |
| "", |
| 0, |
| true |
| }, |
| { |
| kInvalidRenderViewID, |
| GURL("chrome-search://favicon/size/16@2x/1/2"), |
| "size/16@2x/", |
| 0, |
| true |
| }, |
| { |
| kInvalidRenderViewID, |
| GURL("chrome-search://favicon/largest/1/2"), |
| "largest/", |
| 0, |
| true |
| }, |
| { |
| kInvalidRenderViewID, |
| GURL("chrome-search://favicon/origin/1/2"), |
| "origin/", |
| 0, |
| true |
| }, |
| { |
| kInvalidRenderViewID, |
| GURL("chrome-search://favicon/iconurl/1/2"), |
| "iconurl/", |
| 0, |
| true |
| }, |
| |
| // Invalid transient urls. |
| { |
| kValidRenderViewID, |
| GURL("chrome-search://favicon"), |
| "", |
| 0, |
| false |
| }, |
| { |
| kValidRenderViewID, |
| GURL("chrome-search://favicon/"), |
| "", |
| 0, |
| false |
| }, |
| { |
| kValidRenderViewID, |
| GURL("chrome-search://favicon/size/16@2x"), |
| "", |
| 0, |
| false |
| }, |
| { |
| kValidRenderViewID, |
| GURL("chrome-search://favicon/size"), |
| "", |
| 0, |
| true |
| }, |
| { |
| kValidRenderViewID, |
| GURL("chrome-search://favicon/size/16@2x/123"), |
| "size/16@2x/", |
| 0, |
| true |
| }, |
| { |
| kValidRenderViewID, |
| GURL("chrome-search://favicon/size/16@2x/xyz"), |
| "size/16@2x/", |
| 0, |
| true |
| }, |
| { |
| kValidRenderViewID, |
| GURL("chrome-search://favicon/size/16@2x/123/"), |
| "size/16@2x/", |
| 0, |
| true |
| }, |
| { |
| kValidRenderViewID, |
| GURL("chrome-search://favicon/size/16@2x/123/xyz"), |
| "size/16@2x/", |
| 0, |
| true |
| }, |
| { |
| kValidRenderViewID, |
| GURL("chrome-search://favicon/invalidparameter/16@2x/1/2"), |
| "", |
| 0, |
| true |
| } |
| }; |
| |
| std::string favicon_params = ""; |
| InstantRestrictedID rid = 0; |
| for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) { |
| bool return_val = GetRestrictedIDFromFaviconUrl( |
| test_cases[i].render_view_id, |
| test_cases[i].transient_url, |
| &favicon_params, |
| &rid); |
| EXPECT_EQ(test_cases[i].expected_return_val, return_val); |
| EXPECT_EQ(test_cases[i].expected_favicon_params, favicon_params); |
| EXPECT_EQ(test_cases[i].expected_rid, rid); |
| favicon_params = ""; |
| rid = 0; |
| } |
| } |
| |
| } // namespace internal |