// Copyright (c) 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/strings/utf_string_conversions.h"
#include "content/public/common/context_menu_params.h"
#include "content/renderer/render_frame_impl.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/range/range.h"
namespace content {
TEST(RenderFrameImplTest, ShouldUpdateSelectionTextFromContextMenuParams) {
struct {
const char* selection_text;
size_t selection_text_offset;
gfx::Range selection_range;
const char* params_selection_text;
bool expected_result;
} cases[] = {
{ "test", 0, gfx::Range(0, 4), "test", false },
{ "zebestest", 0, gfx::Range(2, 6), "best", false },
{ "zebestest", 2, gfx::Range(2, 6), "best", true },
{ "test", 0, gfx::Range(0, 4), "hello", true },
{ "best test", 0, gfx::Range(0, 4), "best ", false },
{ "best test", 0, gfx::Range(0, 5), "best", false },
};
ContextMenuParams params;
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) {
params.selection_text = base::UTF8ToUTF16(cases[i].params_selection_text);
EXPECT_EQ(cases[i].expected_result,
RenderFrameImpl::ShouldUpdateSelectionTextFromContextMenuParams(
base::UTF8ToUTF16(cases[i].selection_text),
cases[i].selection_text_offset,
cases[i].selection_range,
params));
}
}
} // namespace content