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

Side by Side Diff: webkit/api/src/ContextMenuClientImpl.cpp

Issue 341030: Moves webview_impl.cc, webframe_impl.cc and webframeloaderclient_impl.cc into... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 11 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/api/src/ContextMenuClientImpl.h ('k') | webkit/api/src/DragClientImpl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 30 matching lines...) Expand all
41 #include "HitTestResult.h" 41 #include "HitTestResult.h"
42 #include "HTMLMediaElement.h" 42 #include "HTMLMediaElement.h"
43 #include "HTMLNames.h" 43 #include "HTMLNames.h"
44 #include "KURL.h" 44 #include "KURL.h"
45 #include "MediaError.h" 45 #include "MediaError.h"
46 #include "PlatformString.h" 46 #include "PlatformString.h"
47 #include "TextBreakIterator.h" 47 #include "TextBreakIterator.h"
48 #include "Widget.h" 48 #include "Widget.h"
49 49
50 #include "WebContextMenuData.h" 50 #include "WebContextMenuData.h"
51 #include "WebFrame.h" 51 #include "WebDataSourceImpl.h"
52 #include "WebFrameImpl.h"
52 #include "WebPoint.h" 53 #include "WebPoint.h"
53 #include "WebString.h" 54 #include "WebString.h"
54 #include "WebURL.h" 55 #include "WebURL.h"
55 #include "WebURLResponse.h" 56 #include "WebURLResponse.h"
56 #include "WebViewClient.h" 57 #include "WebViewClient.h"
57 #include "WebDataSourceImpl.h" 58 #include "WebViewImpl.h"
58 #undef LOG
59
60 // FIXME: Temporary hack until WebViewImpl is in api/src.
61 #include "webkit/glue/webview_impl.h"
62 59
63 using namespace WebCore; 60 using namespace WebCore;
64 61
65 namespace WebKit { 62 namespace WebKit {
66 63
67 // Figure out the URL of a page or subframe. Returns |page_type| as the type, 64 // Figure out the URL of a page or subframe. Returns |page_type| as the type,
68 // which indicates page or subframe, or ContextNodeType::NONE if the URL could not 65 // which indicates page or subframe, or ContextNodeType::NONE if the URL could not
69 // be determined for some reason. 66 // be determined for some reason.
70 static WebURL urlFromFrame(Frame* frame) 67 static WebURL urlFromFrame(Frame* frame)
71 { 68 {
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 } 133 }
137 134
138 PlatformMenuDescription ContextMenuClientImpl::getCustomMenuFromDefaultItems( 135 PlatformMenuDescription ContextMenuClientImpl::getCustomMenuFromDefaultItems(
139 ContextMenu* defaultMenu) 136 ContextMenu* defaultMenu)
140 { 137 {
141 // Displaying the context menu in this function is a big hack as we don't 138 // Displaying the context menu in this function is a big hack as we don't
142 // have context, i.e. whether this is being invoked via a script or in 139 // have context, i.e. whether this is being invoked via a script or in
143 // response to user input (Mouse event WM_RBUTTONDOWN, 140 // response to user input (Mouse event WM_RBUTTONDOWN,
144 // Keyboard events KeyVK_APPS, Shift+F10). Check if this is being invoked 141 // Keyboard events KeyVK_APPS, Shift+F10). Check if this is being invoked
145 // in response to the above input events before popping up the context menu. 142 // in response to the above input events before popping up the context menu.
146 if (!m_webView->context_menu_allowed()) 143 if (!m_webView->contextMenuAllowed())
147 return 0; 144 return 0;
148 145
149 HitTestResult r = defaultMenu->hitTestResult(); 146 HitTestResult r = defaultMenu->hitTestResult();
150 Frame* selectedFrame = r.innerNonSharedNode()->document()->frame(); 147 Frame* selectedFrame = r.innerNonSharedNode()->document()->frame();
151 148
152 WebContextMenuData data; 149 WebContextMenuData data;
153 data.mousePosition = selectedFrame->view()->contentsToWindow(r.point()); 150 data.mousePosition = selectedFrame->view()->contentsToWindow(r.point());
154 151
155 // Links, Images, Media tags, and Image/Media-Links take preference over 152 // Links, Images, Media tags, and Image/Media-Links take preference over
156 // all else. 153 // all else.
(...skipping 28 matching lines...) Expand all
185 if (mediaElement->supportsSave()) 182 if (mediaElement->supportsSave())
186 data.mediaFlags |= WebContextMenuData::MediaCanSave; 183 data.mediaFlags |= WebContextMenuData::MediaCanSave;
187 if (mediaElement->hasAudio()) 184 if (mediaElement->hasAudio())
188 data.mediaFlags |= WebContextMenuData::MediaHasAudio; 185 data.mediaFlags |= WebContextMenuData::MediaHasAudio;
189 } 186 }
190 // If it's not a link, an image, a media element, or an image/media link, 187 // If it's not a link, an image, a media element, or an image/media link,
191 // show a selection menu or a more generic page menu. 188 // show a selection menu or a more generic page menu.
192 data.frameEncoding = selectedFrame->loader()->encoding(); 189 data.frameEncoding = selectedFrame->loader()->encoding();
193 190
194 // Send the frame and page URLs in any case. 191 // Send the frame and page URLs in any case.
195 data.pageURL = urlFromFrame(m_webView->main_frame()->frame()); 192 data.pageURL = urlFromFrame(m_webView->mainFrameImpl()->frame());
196 if (selectedFrame != m_webView->main_frame()->frame()) 193 if (selectedFrame != m_webView->mainFrameImpl()->frame())
197 data.frameURL = urlFromFrame(selectedFrame); 194 data.frameURL = urlFromFrame(selectedFrame);
198 195
199 if (r.isSelected()) 196 if (r.isSelected())
200 data.selectedText = selectedFrame->selectedText().stripWhiteSpace(); 197 data.selectedText = selectedFrame->selectedText().stripWhiteSpace();
201 198
202 data.isEditable = false; 199 data.isEditable = false;
203 if (r.isContentEditable()) { 200 if (r.isContentEditable()) {
204 data.isEditable = true; 201 data.isEditable = true;
205 if (m_webView->GetFocusedWebCoreFrame()->editor()->isContinuousSpellCheckingEnabled()) { 202 if (m_webView->focusedWebCoreFrame()->editor()->isContinuousSpellCheckingEnabled()) {
206 data.isSpellCheckingEnabled = true; 203 data.isSpellCheckingEnabled = true;
207 data.misspelledWord = selectMisspelledWord(defaultMenu, selectedFrame); 204 data.misspelledWord = selectMisspelledWord(defaultMenu, selectedFrame);
208 } 205 }
209 } 206 }
210 207
211 // Now retrieve the security info. 208 // Now retrieve the security info.
212 DocumentLoader* dl = selectedFrame->loader()->documentLoader(); 209 DocumentLoader* dl = selectedFrame->loader()->documentLoader();
213 WebDataSource* ds = WebDataSourceImpl::fromDocumentLoader(dl); 210 WebDataSource* ds = WebDataSourceImpl::fromDocumentLoader(dl);
214 if (ds) 211 if (ds)
215 data.securityInfo = ds->response().securityInfo(); 212 data.securityInfo = ds->response().securityInfo();
216 213
217 // Compute edit flags. 214 // Compute edit flags.
218 data.editFlags = WebContextMenuData::CanDoNone; 215 data.editFlags = WebContextMenuData::CanDoNone;
219 if (m_webView->GetFocusedWebCoreFrame()->editor()->canUndo()) 216 if (m_webView->focusedWebCoreFrame()->editor()->canUndo())
220 data.editFlags |= WebContextMenuData::CanUndo; 217 data.editFlags |= WebContextMenuData::CanUndo;
221 if (m_webView->GetFocusedWebCoreFrame()->editor()->canRedo()) 218 if (m_webView->focusedWebCoreFrame()->editor()->canRedo())
222 data.editFlags |= WebContextMenuData::CanRedo; 219 data.editFlags |= WebContextMenuData::CanRedo;
223 if (m_webView->GetFocusedWebCoreFrame()->editor()->canCut()) 220 if (m_webView->focusedWebCoreFrame()->editor()->canCut())
224 data.editFlags |= WebContextMenuData::CanCut; 221 data.editFlags |= WebContextMenuData::CanCut;
225 if (m_webView->GetFocusedWebCoreFrame()->editor()->canCopy()) 222 if (m_webView->focusedWebCoreFrame()->editor()->canCopy())
226 data.editFlags |= WebContextMenuData::CanCopy; 223 data.editFlags |= WebContextMenuData::CanCopy;
227 if (m_webView->GetFocusedWebCoreFrame()->editor()->canPaste()) 224 if (m_webView->focusedWebCoreFrame()->editor()->canPaste())
228 data.editFlags |= WebContextMenuData::CanPaste; 225 data.editFlags |= WebContextMenuData::CanPaste;
229 if (m_webView->GetFocusedWebCoreFrame()->editor()->canDelete()) 226 if (m_webView->focusedWebCoreFrame()->editor()->canDelete())
230 data.editFlags |= WebContextMenuData::CanDelete; 227 data.editFlags |= WebContextMenuData::CanDelete;
231 // We can always select all... 228 // We can always select all...
232 data.editFlags |= WebContextMenuData::CanSelectAll; 229 data.editFlags |= WebContextMenuData::CanSelectAll;
233 230
234 WebFrame* selected_web_frame = WebFrameImpl::FromFrame(selectedFrame); 231 WebFrame* selected_web_frame = WebFrameImpl::fromFrame(selectedFrame);
235 if (m_webView->client()) 232 if (m_webView->client())
236 m_webView->client()->showContextMenu(selected_web_frame, data); 233 m_webView->client()->showContextMenu(selected_web_frame, data);
237 234
238 return 0; 235 return 0;
239 } 236 }
240 237
241 } // namespace WebKit 238 } // namespace WebKit
OLDNEW
« no previous file with comments | « webkit/api/src/ContextMenuClientImpl.h ('k') | webkit/api/src/DragClientImpl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698