Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2514)

Unified Diff: content/shell/renderer/test_runner/event_sender.cc

Issue 438193003: Updating MakeMenuItemStringsFor() to include custom items if provided by blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added submenu and menu depth identifier Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/shell/renderer/test_runner/event_sender.cc
diff --git a/content/shell/renderer/test_runner/event_sender.cc b/content/shell/renderer/test_runner/event_sender.cc
index 8791a2f8c1dfb26b4a89dd7a1d54577c6a2faf3d..090d4b9454af961e7fc40a43a67b6187942094c9 100644
--- a/content/shell/renderer/test_runner/event_sender.cc
+++ b/content/shell/renderer/test_runner/event_sender.cc
@@ -32,6 +32,7 @@ using blink::WebFrame;
using blink::WebGestureEvent;
using blink::WebInputEvent;
using blink::WebKeyboardEvent;
+using blink::WebMenuItemInfo;
using blink::WebMouseEvent;
using blink::WebMouseWheelEvent;
using blink::WebPoint;
@@ -121,12 +122,39 @@ int GetKeyModifiersFromV8(v8::Handle<v8::Value> value) {
// double or triple click.
const double kMultipleClickTimeSec = 1;
const int kMultipleClickRadiusPixels = 5;
+const std::string kSubMenuIdentifier = " >";
tkent 2014/08/05 08:50:10 We don't allow static initialization of classes. k
pals 2014/08/05 09:02:24 Done.
+const std::string kSubMenuDepthIdentifier = "_";
bool OutsideMultiClickRadius(const WebPoint& a, const WebPoint& b) {
return ((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y)) >
kMultipleClickRadiusPixels * kMultipleClickRadiusPixels;
}
+std::string depthPrefix(unsigned depth)
+{
+ if (depth < 1)
+ return std::string();
+
+ std::string prefix;
+ for (size_t i = 0; i < depth; ++i) {
+ prefix += kSubMenuDepthIdentifier;
+ }
+ return std::string(prefix);
+}
+
+void PopulateCustomItems(const WebVector<WebMenuItemInfo>& customItems,
+ std::vector<std::string>& strings, unsigned depth) {
tkent 2014/08/05 08:50:10 Please make the third argument |const std::string&
pals 2014/08/05 09:02:24 Done. Thanks
+ for (size_t i = 0; i < customItems.size(); ++i) {
+ if (customItems[i].type == blink::WebMenuItemInfo::SubMenu) {
+ unsigned newDepth = depth + 1;
+ strings.push_back(depthPrefix(newDepth) + customItems[i].label.utf8() + kSubMenuIdentifier);
tkent 2014/08/05 08:50:10 |depthPrefix(newDepth) +| -> |prefix +|
pals 2014/08/05 09:02:24 Done.
+ PopulateCustomItems(customItems[i].subMenuItems, strings, newDepth);
tkent 2014/08/05 08:50:10 |newDepth| -> |prefix + kSubMenuDepthIdentifier|
pals 2014/08/05 09:02:24 Done.
+ } else {
+ strings.push_back(depthPrefix(depth) + customItems[i].label.utf8());
tkent 2014/08/05 08:50:11 |depthPrefix(newDepth) +| -> |prefix +|
pals 2014/08/05 09:02:24 Done.
+ }
+ }
+}
+
// Because actual context menu is implemented by the browser side,
// this function does only what LayoutTests are expecting:
// - Many test checks the count of items. So returning non-zero value makes
@@ -172,6 +200,9 @@ std::vector<std::string> MakeMenuItemStringsFor(
std::vector<std::string> strings;
+ // Populate custom menu items if provided by the WebCore internals.
tkent 2014/08/05 08:50:11 |WebCore| is an obsolete name. "provided by Blink
pals 2014/08/05 09:02:24 Done.
+ PopulateCustomItems(context_menu->customItems, strings, 0);
tkent 2014/08/05 08:50:10 |0| -> |""|
pals 2014/08/05 09:02:24 Done.
+
if (context_menu->isEditable) {
for (const char** item = kEditableMenuStrings; *item; ++item) {
strings.push_back(*item);
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698