12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/common/context_menu_params.h"
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/renderer/render_view_impl.h"
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "ui/gfx/range/range.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace content {
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(RenderViewImplTest, ShouldUpdateSelectionTextFromContextMenuParams) {
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  struct {
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const char* selection_text;
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    size_t selection_text_offset;
1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    gfx::Range selection_range;
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const char* params_selection_text;
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    bool expected_result;
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  } cases[] = {
2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    { "test", 0, gfx::Range(0, 4), "test", false },
2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    { "zebestest", 0, gfx::Range(2, 6), "best", false },
2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    { "zebestest", 2, gfx::Range(2, 6), "best", true },
2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    { "test", 0, gfx::Range(0, 4), "hello", true },
2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    { "best test", 0, gfx::Range(0, 4), "best ", false },
2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    { "best test", 0, gfx::Range(0, 5), "best", false },
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  };
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ContextMenuParams params;
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) {
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    params.selection_text = UTF8ToUTF16(cases[i].params_selection_text);
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    EXPECT_EQ(cases[i].expected_result,
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)              RenderViewImpl::ShouldUpdateSelectionTextFromContextMenuParams(
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                  UTF8ToUTF16(cases[i].selection_text),
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                  cases[i].selection_text_offset,
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                  cases[i].selection_range,
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                  params));
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace content
42