// 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_view_impl.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/gfx/range/range.h" namespace content { TEST(RenderViewImplTest, 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 = UTF8ToUTF16(cases[i].params_selection_text); EXPECT_EQ(cases[i].expected_result, RenderViewImpl::ShouldUpdateSelectionTextFromContextMenuParams( UTF8ToUTF16(cases[i].selection_text), cases[i].selection_text_offset, cases[i].selection_range, params)); } } } // namespace content