root/chrome/renderer/searchbox/searchbox_unittest.cc

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. TEST
  2. TEST

// 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

/* [<][>][^][v][top][bottom][index][help] */