| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/command_line.h" | 5 #include "base/command_line.h" |
| 6 #include "base/path_service.h" | 6 #include "base/path_service.h" |
| 7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
| 8 #include "chrome/app/chrome_command_ids.h" | 8 #include "chrome/app/chrome_command_ids.h" |
| 9 #include "chrome/browser/chrome_notification_types.h" | 9 #include "chrome/browser/chrome_notification_types.h" |
| 10 #include "chrome/browser/extensions/extension_browsertest.h" | 10 #include "chrome/browser/extensions/extension_browsertest.h" |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 LoadExtension(test_data_dir_.AppendASCII("test_extension")); | 108 LoadExtension(test_data_dir_.AppendASCII("test_extension")); |
| 109 Panel* panel = CreatePanelFromExtension(extension); | 109 Panel* panel = CreatePanelFromExtension(extension); |
| 110 | 110 |
| 111 // Close tha panel without waiting for the app icon loaded. | 111 // Close tha panel without waiting for the app icon loaded. |
| 112 panel->Close(); | 112 panel->Close(); |
| 113 } | 113 } |
| 114 | 114 |
| 115 // Non-abstract RenderViewContextMenu class for testing context menus in Panels. | 115 // Non-abstract RenderViewContextMenu class for testing context menus in Panels. |
| 116 class PanelContextMenu : public RenderViewContextMenu { | 116 class PanelContextMenu : public RenderViewContextMenu { |
| 117 public: | 117 public: |
| 118 PanelContextMenu(content::WebContents* web_contents, | 118 PanelContextMenu(content::RenderFrameHost* render_frame_host, |
| 119 const content::ContextMenuParams& params) | 119 const content::ContextMenuParams& params) |
| 120 : RenderViewContextMenu(web_contents, params) {} | 120 : RenderViewContextMenu(render_frame_host, params) {} |
| 121 | 121 |
| 122 bool HasCommandWithId(int command_id) { | 122 bool HasCommandWithId(int command_id) { |
| 123 return menu_model_.GetIndexOfCommandId(command_id) != -1; | 123 return menu_model_.GetIndexOfCommandId(command_id) != -1; |
| 124 } | 124 } |
| 125 | 125 |
| 126 protected: | 126 protected: |
| 127 // RenderViewContextMenu implementation. | 127 // RenderViewContextMenu implementation. |
| 128 virtual bool GetAcceleratorForCommandId( | 128 virtual bool GetAcceleratorForCommandId( |
| 129 int command_id, | 129 int command_id, |
| 130 ui::Accelerator* accelerator) OVERRIDE { | 130 ui::Accelerator* accelerator) OVERRIDE { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 149 // Verify basic menu contents. The basic extension does not add any | 149 // Verify basic menu contents. The basic extension does not add any |
| 150 // context menu items so the panel's menu should include only the | 150 // context menu items so the panel's menu should include only the |
| 151 // developer tools. | 151 // developer tools. |
| 152 { | 152 { |
| 153 content::ContextMenuParams params; | 153 content::ContextMenuParams params; |
| 154 params.page_url = web_contents->GetURL(); | 154 params.page_url = web_contents->GetURL(); |
| 155 // Ensure context menu isn't swallowed by WebContentsDelegate (the panel). | 155 // Ensure context menu isn't swallowed by WebContentsDelegate (the panel). |
| 156 EXPECT_FALSE(web_contents->GetDelegate()->HandleContextMenu(params)); | 156 EXPECT_FALSE(web_contents->GetDelegate()->HandleContextMenu(params)); |
| 157 | 157 |
| 158 scoped_ptr<PanelContextMenu> menu( | 158 scoped_ptr<PanelContextMenu> menu( |
| 159 new PanelContextMenu(web_contents, params)); | 159 new PanelContextMenu(web_contents->GetMainFrame(), params)); |
| 160 menu->Init(); | 160 menu->Init(); |
| 161 | 161 |
| 162 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); | 162 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); |
| 163 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_UNDO)); | 163 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_UNDO)); |
| 164 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_PASTE)); | 164 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_PASTE)); |
| 165 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPY)); | 165 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPY)); |
| 166 EXPECT_FALSE(menu->HasCommandWithId(IDC_BACK)); | 166 EXPECT_FALSE(menu->HasCommandWithId(IDC_BACK)); |
| 167 EXPECT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); | 167 EXPECT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); |
| 168 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPYLINKLOCATION)); | 168 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPYLINKLOCATION)); |
| 169 } | 169 } |
| 170 | 170 |
| 171 // Verify expected menu contents for editable item. | 171 // Verify expected menu contents for editable item. |
| 172 { | 172 { |
| 173 content::ContextMenuParams params; | 173 content::ContextMenuParams params; |
| 174 params.is_editable = true; | 174 params.is_editable = true; |
| 175 params.page_url = web_contents->GetURL(); | 175 params.page_url = web_contents->GetURL(); |
| 176 // Ensure context menu isn't swallowed by WebContentsDelegate (the panel). | 176 // Ensure context menu isn't swallowed by WebContentsDelegate (the panel). |
| 177 EXPECT_FALSE(web_contents->GetDelegate()->HandleContextMenu(params)); | 177 EXPECT_FALSE(web_contents->GetDelegate()->HandleContextMenu(params)); |
| 178 | 178 |
| 179 scoped_ptr<PanelContextMenu> menu( | 179 scoped_ptr<PanelContextMenu> menu( |
| 180 new PanelContextMenu(web_contents, params)); | 180 new PanelContextMenu(web_contents->GetMainFrame(), params)); |
| 181 menu->Init(); | 181 menu->Init(); |
| 182 | 182 |
| 183 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); | 183 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); |
| 184 EXPECT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_UNDO)); | 184 EXPECT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_UNDO)); |
| 185 EXPECT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_PASTE)); | 185 EXPECT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_PASTE)); |
| 186 EXPECT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPY)); | 186 EXPECT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPY)); |
| 187 EXPECT_FALSE(menu->HasCommandWithId(IDC_BACK)); | 187 EXPECT_FALSE(menu->HasCommandWithId(IDC_BACK)); |
| 188 EXPECT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); | 188 EXPECT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); |
| 189 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPYLINKLOCATION)); | 189 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPYLINKLOCATION)); |
| 190 } | 190 } |
| 191 | 191 |
| 192 // Verify expected menu contents for text selection. | 192 // Verify expected menu contents for text selection. |
| 193 { | 193 { |
| 194 content::ContextMenuParams params; | 194 content::ContextMenuParams params; |
| 195 params.page_url = web_contents->GetURL(); | 195 params.page_url = web_contents->GetURL(); |
| 196 params.selection_text = base::ASCIIToUTF16("Select me"); | 196 params.selection_text = base::ASCIIToUTF16("Select me"); |
| 197 // Ensure context menu isn't swallowed by WebContentsDelegate (the panel). | 197 // Ensure context menu isn't swallowed by WebContentsDelegate (the panel). |
| 198 EXPECT_FALSE(web_contents->GetDelegate()->HandleContextMenu(params)); | 198 EXPECT_FALSE(web_contents->GetDelegate()->HandleContextMenu(params)); |
| 199 | 199 |
| 200 scoped_ptr<PanelContextMenu> menu( | 200 scoped_ptr<PanelContextMenu> menu( |
| 201 new PanelContextMenu(web_contents, params)); | 201 new PanelContextMenu(web_contents->GetMainFrame(), params)); |
| 202 menu->Init(); | 202 menu->Init(); |
| 203 | 203 |
| 204 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); | 204 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); |
| 205 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_UNDO)); | 205 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_UNDO)); |
| 206 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_PASTE)); | 206 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_PASTE)); |
| 207 EXPECT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPY)); | 207 EXPECT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPY)); |
| 208 EXPECT_FALSE(menu->HasCommandWithId(IDC_BACK)); | 208 EXPECT_FALSE(menu->HasCommandWithId(IDC_BACK)); |
| 209 EXPECT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); | 209 EXPECT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); |
| 210 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPYLINKLOCATION)); | 210 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPYLINKLOCATION)); |
| 211 } | 211 } |
| 212 | 212 |
| 213 // Verify expected menu contexts for a link. | 213 // Verify expected menu contexts for a link. |
| 214 { | 214 { |
| 215 content::ContextMenuParams params; | 215 content::ContextMenuParams params; |
| 216 params.page_url = web_contents->GetURL(); | 216 params.page_url = web_contents->GetURL(); |
| 217 params.unfiltered_link_url = GURL("http://google.com/"); | 217 params.unfiltered_link_url = GURL("http://google.com/"); |
| 218 // Ensure context menu isn't swallowed by WebContentsDelegate (the panel). | 218 // Ensure context menu isn't swallowed by WebContentsDelegate (the panel). |
| 219 EXPECT_FALSE(web_contents->GetDelegate()->HandleContextMenu(params)); | 219 EXPECT_FALSE(web_contents->GetDelegate()->HandleContextMenu(params)); |
| 220 | 220 |
| 221 scoped_ptr<PanelContextMenu> menu( | 221 scoped_ptr<PanelContextMenu> menu( |
| 222 new PanelContextMenu(web_contents, params)); | 222 new PanelContextMenu(web_contents->GetMainFrame(), params)); |
| 223 menu->Init(); | 223 menu->Init(); |
| 224 | 224 |
| 225 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); | 225 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); |
| 226 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_UNDO)); | 226 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_UNDO)); |
| 227 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_PASTE)); | 227 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_PASTE)); |
| 228 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPY)); | 228 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPY)); |
| 229 EXPECT_FALSE(menu->HasCommandWithId(IDC_BACK)); | 229 EXPECT_FALSE(menu->HasCommandWithId(IDC_BACK)); |
| 230 EXPECT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); | 230 EXPECT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); |
| 231 EXPECT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPYLINKLOCATION)); | 231 EXPECT_TRUE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPYLINKLOCATION)); |
| 232 } | 232 } |
| (...skipping 17 matching lines...) Expand all Loading... |
| 250 ASSERT_TRUE(web_contents); | 250 ASSERT_TRUE(web_contents); |
| 251 | 251 |
| 252 content::ContextMenuParams params; | 252 content::ContextMenuParams params; |
| 253 params.page_url = web_contents->GetURL(); | 253 params.page_url = web_contents->GetURL(); |
| 254 | 254 |
| 255 // Ensure context menu isn't swallowed by WebContentsDelegate (the panel). | 255 // Ensure context menu isn't swallowed by WebContentsDelegate (the panel). |
| 256 EXPECT_FALSE(web_contents->GetDelegate()->HandleContextMenu(params)); | 256 EXPECT_FALSE(web_contents->GetDelegate()->HandleContextMenu(params)); |
| 257 | 257 |
| 258 // Verify menu contents contains the custom item added by their own extension. | 258 // Verify menu contents contains the custom item added by their own extension. |
| 259 scoped_ptr<PanelContextMenu> menu; | 259 scoped_ptr<PanelContextMenu> menu; |
| 260 menu.reset(new PanelContextMenu(web_contents, params)); | 260 menu.reset(new PanelContextMenu(web_contents->GetMainFrame(), params)); |
| 261 menu->Init(); | 261 menu->Init(); |
| 262 EXPECT_TRUE(menu->HasCommandWithId(IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST)); | 262 EXPECT_TRUE(menu->HasCommandWithId(IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST)); |
| 263 EXPECT_FALSE(menu->HasCommandWithId(IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST + 1)); | 263 EXPECT_FALSE(menu->HasCommandWithId(IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST + 1)); |
| 264 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); | 264 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_INSPECTELEMENT)); |
| 265 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_UNDO)); | 265 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_UNDO)); |
| 266 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_PASTE)); | 266 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_PASTE)); |
| 267 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPY)); | 267 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPY)); |
| 268 EXPECT_FALSE(menu->HasCommandWithId(IDC_BACK)); | 268 EXPECT_FALSE(menu->HasCommandWithId(IDC_BACK)); |
| 269 EXPECT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); | 269 EXPECT_FALSE(menu->HasCommandWithId(IDC_SAVE_PAGE)); |
| 270 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPYLINKLOCATION)); | 270 EXPECT_FALSE(menu->HasCommandWithId(IDC_CONTENT_CONTEXT_COPYLINKLOCATION)); |
| 271 | 271 |
| 272 // Execute the extension's custom menu item and wait for the extension's | 272 // Execute the extension's custom menu item and wait for the extension's |
| 273 // script to tell us its onclick fired. | 273 // script to tell us its onclick fired. |
| 274 ExtensionTestMessageListener onclick_listener("clicked", false); | 274 ExtensionTestMessageListener onclick_listener("clicked", false); |
| 275 int command_id = IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST; | 275 int command_id = IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST; |
| 276 ASSERT_TRUE(menu->IsCommandIdEnabled(command_id)); | 276 ASSERT_TRUE(menu->IsCommandIdEnabled(command_id)); |
| 277 menu->ExecuteCommand(command_id, 0); | 277 menu->ExecuteCommand(command_id, 0); |
| 278 EXPECT_TRUE(onclick_listener.WaitUntilSatisfied()); | 278 EXPECT_TRUE(onclick_listener.WaitUntilSatisfied()); |
| 279 } | 279 } |
| OLD | NEW |