| OLD | NEW |
| 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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 #include "NotificationPresenterImpl.h" | 49 #include "NotificationPresenterImpl.h" |
| 50 #include "Page.h" | 50 #include "Page.h" |
| 51 #include "PopupMenuChromium.h" | 51 #include "PopupMenuChromium.h" |
| 52 #include "ScriptController.h" | 52 #include "ScriptController.h" |
| 53 #if USE(V8) | 53 #if USE(V8) |
| 54 #include "V8Proxy.h" | 54 #include "V8Proxy.h" |
| 55 #endif | 55 #endif |
| 56 #include "WebAccessibilityObject.h" | 56 #include "WebAccessibilityObject.h" |
| 57 #include "WebConsoleMessage.h" | 57 #include "WebConsoleMessage.h" |
| 58 #include "WebCursorInfo.h" | 58 #include "WebCursorInfo.h" |
| 59 #include "WebFileChooserCompletion.h" | 59 #include "WebFileChooserCompletionImpl.h" |
| 60 #include "WebFrameClient.h" | 60 #include "WebFrameClient.h" |
| 61 #include "WebFrameImpl.h" |
| 61 #include "WebInputEvent.h" | 62 #include "WebInputEvent.h" |
| 62 #include "WebKit.h" | 63 #include "WebKit.h" |
| 64 #include "WebPopupMenuImpl.h" |
| 63 #include "WebPopupMenuInfo.h" | 65 #include "WebPopupMenuInfo.h" |
| 64 #include "WebRect.h" | 66 #include "WebRect.h" |
| 65 #include "WebTextDirection.h" | 67 #include "WebTextDirection.h" |
| 66 #include "WebURLRequest.h" | 68 #include "WebURLRequest.h" |
| 67 #include "WebViewClient.h" | 69 #include "WebViewClient.h" |
| 68 #include "WebFileChooserCompletionImpl.h" | 70 #include "WebViewImpl.h" |
| 69 #include "WebPopupMenuImpl.h" | |
| 70 #include "WindowFeatures.h" | 71 #include "WindowFeatures.h" |
| 71 #include "WrappedResourceRequest.h" | 72 #include "WrappedResourceRequest.h" |
| 72 | 73 |
| 73 // FIXME: Remove these once they move out of glue/. | |
| 74 #include "webkit/glue/webframe_impl.h" | |
| 75 #include "webkit/glue/webview_impl.h" | |
| 76 | |
| 77 using namespace WebCore; | 74 using namespace WebCore; |
| 78 | 75 |
| 79 namespace WebKit { | 76 namespace WebKit { |
| 80 | 77 |
| 81 ChromeClientImpl::ChromeClientImpl(WebViewImpl* webView) | 78 ChromeClientImpl::ChromeClientImpl(WebViewImpl* webView) |
| 82 : m_webView(webView) | 79 : m_webView(webView) |
| 83 , m_toolbarsVisible(true) | 80 , m_toolbarsVisible(true) |
| 84 , m_statusbarVisible(true) | 81 , m_statusbarVisible(true) |
| 85 , m_scrollbarsVisible(true) | 82 , m_scrollbarsVisible(true) |
| 86 , m_menubarVisible(true) | 83 , m_menubarVisible(true) |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 | 138 |
| 142 void ChromeClientImpl::focus() | 139 void ChromeClientImpl::focus() |
| 143 { | 140 { |
| 144 if (!m_webView->client()) | 141 if (!m_webView->client()) |
| 145 return; | 142 return; |
| 146 | 143 |
| 147 m_webView->client()->didFocus(); | 144 m_webView->client()->didFocus(); |
| 148 | 145 |
| 149 // If accessibility is enabled, we should notify assistive technology that | 146 // If accessibility is enabled, we should notify assistive technology that |
| 150 // the active AccessibilityObject changed. | 147 // the active AccessibilityObject changed. |
| 151 const Frame* frame = m_webView->GetFocusedWebCoreFrame(); | 148 const Frame* frame = m_webView->focusedWebCoreFrame(); |
| 152 if (!frame) | 149 if (!frame) |
| 153 return; | 150 return; |
| 154 | 151 |
| 155 Document* doc = frame->document(); | 152 Document* doc = frame->document(); |
| 156 | 153 |
| 157 if (doc && doc->axObjectCache()->accessibilityEnabled()) { | 154 if (doc && doc->axObjectCache()->accessibilityEnabled()) { |
| 158 Node* focusedNode = m_webView->GetFocusedNode(); | 155 Node* focusedNode = m_webView->focusedWebCoreNode(); |
| 159 | 156 |
| 160 if (!focusedNode) { | 157 if (!focusedNode) { |
| 161 // Could not retrieve focused Node. | 158 // Could not retrieve focused Node. |
| 162 return; | 159 return; |
| 163 } | 160 } |
| 164 | 161 |
| 165 // Retrieve the focused AccessibilityObject. | 162 // Retrieve the focused AccessibilityObject. |
| 166 AccessibilityObject* focusedAccObj = | 163 AccessibilityObject* focusedAccObj = |
| 167 doc->axObjectCache()->getOrCreate(focusedNode->renderer()); | 164 doc->axObjectCache()->getOrCreate(focusedNode->renderer()); |
| 168 | 165 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 195 m_webView->client()->focusNext(); | 192 m_webView->client()->focusNext(); |
| 196 } | 193 } |
| 197 | 194 |
| 198 Page* ChromeClientImpl::createWindow( | 195 Page* ChromeClientImpl::createWindow( |
| 199 Frame* frame, const FrameLoadRequest& r, const WindowFeatures& features) | 196 Frame* frame, const FrameLoadRequest& r, const WindowFeatures& features) |
| 200 { | 197 { |
| 201 if (!m_webView->client()) | 198 if (!m_webView->client()) |
| 202 return 0; | 199 return 0; |
| 203 | 200 |
| 204 WebViewImpl* newView = static_cast<WebViewImpl*>( | 201 WebViewImpl* newView = static_cast<WebViewImpl*>( |
| 205 m_webView->client()->createView(WebFrameImpl::FromFrame(frame))); | 202 m_webView->client()->createView(WebFrameImpl::fromFrame(frame))); |
| 206 if (!newView) | 203 if (!newView) |
| 207 return 0; | 204 return 0; |
| 208 | 205 |
| 209 // The request is empty when we are just being asked to open a blank window. | 206 // The request is empty when we are just being asked to open a blank window. |
| 210 // This corresponds to window.open(""), for example. | 207 // This corresponds to window.open(""), for example. |
| 211 if (!r.resourceRequest().isEmpty()) { | 208 if (!r.resourceRequest().isEmpty()) { |
| 212 WrappedResourceRequest request(r.resourceRequest()); | 209 WrappedResourceRequest request(r.resourceRequest()); |
| 213 newView->main_frame()->loadRequest(request); | 210 newView->mainFrame()->loadRequest(request); |
| 214 } | 211 } |
| 215 | 212 |
| 216 return newView->page(); | 213 return newView->page(); |
| 217 } | 214 } |
| 218 | 215 |
| 219 static inline bool CurrentEventShouldCauseBackgroundTab(const WebInputEvent* inputEvent) | 216 static inline bool currentEventShouldCauseBackgroundTab(const WebInputEvent* inputEvent) |
| 220 { | 217 { |
| 221 if (!inputEvent) | 218 if (!inputEvent) |
| 222 return false; | 219 return false; |
| 223 | 220 |
| 224 if (inputEvent->type != WebInputEvent::MouseUp) | 221 if (inputEvent->type != WebInputEvent::MouseUp) |
| 225 return false; | 222 return false; |
| 226 | 223 |
| 227 const WebMouseEvent* mouseEvent = static_cast<const WebMouseEvent*>(inputEvent); | 224 const WebMouseEvent* mouseEvent = static_cast<const WebMouseEvent*>(inputEvent); |
| 228 | 225 |
| 229 WebNavigationPolicy policy; | 226 WebNavigationPolicy policy; |
| 230 unsigned short buttonNumber; | 227 unsigned short buttonNumber; |
| 231 switch (mouseEvent->button) { | 228 switch (mouseEvent->button) { |
| 232 case WebMouseEvent::ButtonLeft: | 229 case WebMouseEvent::ButtonLeft: |
| 233 buttonNumber = 0; | 230 buttonNumber = 0; |
| 234 break; | 231 break; |
| 235 case WebMouseEvent::ButtonMiddle: | 232 case WebMouseEvent::ButtonMiddle: |
| 236 buttonNumber = 1; | 233 buttonNumber = 1; |
| 237 break; | 234 break; |
| 238 case WebMouseEvent::ButtonRight: | 235 case WebMouseEvent::ButtonRight: |
| 239 buttonNumber = 2; | 236 buttonNumber = 2; |
| 240 break; | 237 break; |
| 241 default: | 238 default: |
| 242 return false; | 239 return false; |
| 243 } | 240 } |
| 244 bool ctrl = mouseEvent->modifiers & WebMouseEvent::ControlKey; | 241 bool ctrl = mouseEvent->modifiers & WebMouseEvent::ControlKey; |
| 245 bool shift = mouseEvent->modifiers & WebMouseEvent::ShiftKey; | 242 bool shift = mouseEvent->modifiers & WebMouseEvent::ShiftKey; |
| 246 bool alt = mouseEvent->modifiers & WebMouseEvent::AltKey; | 243 bool alt = mouseEvent->modifiers & WebMouseEvent::AltKey; |
| 247 bool meta = mouseEvent->modifiers & WebMouseEvent::MetaKey; | 244 bool meta = mouseEvent->modifiers & WebMouseEvent::MetaKey; |
| 248 | 245 |
| 249 if (!WebViewImpl::NavigationPolicyFromMouseEvent(buttonNumber, ctrl, shift, alt, meta, &policy)) | 246 if (!WebViewImpl::navigationPolicyFromMouseEvent(buttonNumber, ctrl, shift, alt, meta, &policy)) |
| 250 return false; | 247 return false; |
| 251 | 248 |
| 252 return policy == WebNavigationPolicyNewBackgroundTab; | 249 return policy == WebNavigationPolicyNewBackgroundTab; |
| 253 } | 250 } |
| 254 | 251 |
| 255 void ChromeClientImpl::show() | 252 void ChromeClientImpl::show() |
| 256 { | 253 { |
| 257 if (!m_webView->client()) | 254 if (!m_webView->client()) |
| 258 return; | 255 return; |
| 259 | 256 |
| 260 // If our default configuration was modified by a script or wasn't | 257 // If our default configuration was modified by a script or wasn't |
| 261 // created by a user gesture, then show as a popup. Else, let this | 258 // created by a user gesture, then show as a popup. Else, let this |
| 262 // new window be opened as a toplevel window. | 259 // new window be opened as a toplevel window. |
| 263 bool asPopup = | 260 bool asPopup = |
| 264 !m_toolbarsVisible || | 261 !m_toolbarsVisible || |
| 265 !m_statusbarVisible || | 262 !m_statusbarVisible || |
| 266 !m_scrollbarsVisible || | 263 !m_scrollbarsVisible || |
| 267 !m_menubarVisible || | 264 !m_menubarVisible || |
| 268 !m_resizable; | 265 !m_resizable; |
| 269 | 266 |
| 270 WebNavigationPolicy policy = WebNavigationPolicyNewForegroundTab; | 267 WebNavigationPolicy policy = WebNavigationPolicyNewForegroundTab; |
| 271 if (asPopup) | 268 if (asPopup) |
| 272 policy = WebNavigationPolicyNewPopup; | 269 policy = WebNavigationPolicyNewPopup; |
| 273 if (CurrentEventShouldCauseBackgroundTab(WebViewImpl::current_input_event())) | 270 if (currentEventShouldCauseBackgroundTab(WebViewImpl::currentInputEvent())) |
| 274 policy = WebNavigationPolicyNewBackgroundTab; | 271 policy = WebNavigationPolicyNewBackgroundTab; |
| 275 | 272 |
| 276 m_webView->client()->show(policy); | 273 m_webView->client()->show(policy); |
| 277 } | 274 } |
| 278 | 275 |
| 279 bool ChromeClientImpl::canRunModal() | 276 bool ChromeClientImpl::canRunModal() |
| 280 { | 277 { |
| 281 return m_webView->client() != 0; | 278 return m_webView->client() != 0; |
| 282 } | 279 } |
| 283 | 280 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 305 bool ChromeClientImpl::statusbarVisible() | 302 bool ChromeClientImpl::statusbarVisible() |
| 306 { | 303 { |
| 307 return m_statusbarVisible; | 304 return m_statusbarVisible; |
| 308 } | 305 } |
| 309 | 306 |
| 310 void ChromeClientImpl::setScrollbarsVisible(bool value) | 307 void ChromeClientImpl::setScrollbarsVisible(bool value) |
| 311 { | 308 { |
| 312 m_scrollbarsVisible = value; | 309 m_scrollbarsVisible = value; |
| 313 WebFrameImpl* web_frame = static_cast<WebFrameImpl*>(m_webView->mainFrame()); | 310 WebFrameImpl* web_frame = static_cast<WebFrameImpl*>(m_webView->mainFrame()); |
| 314 if (web_frame) | 311 if (web_frame) |
| 315 web_frame->SetAllowsScrolling(value); | 312 web_frame->setAllowsScrolling(value); |
| 316 } | 313 } |
| 317 | 314 |
| 318 bool ChromeClientImpl::scrollbarsVisible() | 315 bool ChromeClientImpl::scrollbarsVisible() |
| 319 { | 316 { |
| 320 return m_scrollbarsVisible; | 317 return m_scrollbarsVisible; |
| 321 } | 318 } |
| 322 | 319 |
| 323 void ChromeClientImpl::setMenubarVisible(bool value) | 320 void ChromeClientImpl::setMenubarVisible(bool value) |
| 324 { | 321 { |
| 325 m_menubarVisible = value; | 322 m_menubarVisible = value; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 352 | 349 |
| 353 bool ChromeClientImpl::canRunBeforeUnloadConfirmPanel() | 350 bool ChromeClientImpl::canRunBeforeUnloadConfirmPanel() |
| 354 { | 351 { |
| 355 return m_webView->client() != 0; | 352 return m_webView->client() != 0; |
| 356 } | 353 } |
| 357 | 354 |
| 358 bool ChromeClientImpl::runBeforeUnloadConfirmPanel(const String& message, Frame* frame) | 355 bool ChromeClientImpl::runBeforeUnloadConfirmPanel(const String& message, Frame* frame) |
| 359 { | 356 { |
| 360 if (m_webView->client()) { | 357 if (m_webView->client()) { |
| 361 return m_webView->client()->runModalBeforeUnloadDialog( | 358 return m_webView->client()->runModalBeforeUnloadDialog( |
| 362 WebFrameImpl::FromFrame(frame), message); | 359 WebFrameImpl::fromFrame(frame), message); |
| 363 } | 360 } |
| 364 return false; | 361 return false; |
| 365 } | 362 } |
| 366 | 363 |
| 367 void ChromeClientImpl::closeWindowSoon() | 364 void ChromeClientImpl::closeWindowSoon() |
| 368 { | 365 { |
| 369 // Make sure this Page can no longer be found by JS. | 366 // Make sure this Page can no longer be found by JS. |
| 370 m_webView->page()->setGroupName(String()); | 367 m_webView->page()->setGroupName(String()); |
| 371 | 368 |
| 372 // Make sure that all loading is stopped. Ensures that JS stops executing! | 369 // Make sure that all loading is stopped. Ensures that JS stops executing! |
| 373 m_webView->mainFrame()->stopLoading(); | 370 m_webView->mainFrame()->stopLoading(); |
| 374 | 371 |
| 375 if (m_webView->client()) | 372 if (m_webView->client()) |
| 376 m_webView->client()->closeWidgetSoon(); | 373 m_webView->client()->closeWidgetSoon(); |
| 377 } | 374 } |
| 378 | 375 |
| 379 // Although a Frame is passed in, we don't actually use it, since we | 376 // Although a Frame is passed in, we don't actually use it, since we |
| 380 // already know our own m_webView. | 377 // already know our own m_webView. |
| 381 void ChromeClientImpl::runJavaScriptAlert(Frame* frame, const String& message) | 378 void ChromeClientImpl::runJavaScriptAlert(Frame* frame, const String& message) |
| 382 { | 379 { |
| 383 if (m_webView->client()) { | 380 if (m_webView->client()) { |
| 384 #if USE(V8) | 381 #if USE(V8) |
| 385 // Before showing the JavaScript dialog, we give the proxy implementation | 382 // Before showing the JavaScript dialog, we give the proxy implementation |
| 386 // a chance to process any pending console messages. | 383 // a chance to process any pending console messages. |
| 387 V8Proxy::processConsoleMessages(); | 384 V8Proxy::processConsoleMessages(); |
| 388 #endif | 385 #endif |
| 389 m_webView->client()->runModalAlertDialog( | 386 m_webView->client()->runModalAlertDialog( |
| 390 WebFrameImpl::FromFrame(frame), message); | 387 WebFrameImpl::fromFrame(frame), message); |
| 391 } | 388 } |
| 392 } | 389 } |
| 393 | 390 |
| 394 // See comments for runJavaScriptAlert(). | 391 // See comments for runJavaScriptAlert(). |
| 395 bool ChromeClientImpl::runJavaScriptConfirm(Frame* frame, const String& message) | 392 bool ChromeClientImpl::runJavaScriptConfirm(Frame* frame, const String& message) |
| 396 { | 393 { |
| 397 if (m_webView->client()) { | 394 if (m_webView->client()) { |
| 398 return m_webView->client()->runModalConfirmDialog( | 395 return m_webView->client()->runModalConfirmDialog( |
| 399 WebFrameImpl::FromFrame(frame), message); | 396 WebFrameImpl::fromFrame(frame), message); |
| 400 } | 397 } |
| 401 return false; | 398 return false; |
| 402 } | 399 } |
| 403 | 400 |
| 404 // See comments for runJavaScriptAlert(). | 401 // See comments for runJavaScriptAlert(). |
| 405 bool ChromeClientImpl::runJavaScriptPrompt(Frame* frame, | 402 bool ChromeClientImpl::runJavaScriptPrompt(Frame* frame, |
| 406 const String& message, | 403 const String& message, |
| 407 const String& defaultValue, | 404 const String& defaultValue, |
| 408 String& result) | 405 String& result) |
| 409 { | 406 { |
| 410 if (m_webView->client()) { | 407 if (m_webView->client()) { |
| 411 WebString actualValue; | 408 WebString actualValue; |
| 412 bool ok = m_webView->client()->runModalPromptDialog( | 409 bool ok = m_webView->client()->runModalPromptDialog( |
| 413 WebFrameImpl::FromFrame(frame), | 410 WebFrameImpl::fromFrame(frame), |
| 414 message, | 411 message, |
| 415 defaultValue, | 412 defaultValue, |
| 416 &actualValue); | 413 &actualValue); |
| 417 if (ok) | 414 if (ok) |
| 418 result = actualValue; | 415 result = actualValue; |
| 419 return ok; | 416 return ok; |
| 420 } | 417 } |
| 421 return false; | 418 return false; |
| 422 } | 419 } |
| 423 | 420 |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 485 if (m_webView->client()) { | 482 if (m_webView->client()) { |
| 486 WebRect windowRect = m_webView->client()->windowRect(); | 483 WebRect windowRect = m_webView->client()->windowRect(); |
| 487 screenRect.move(windowRect.x, windowRect.y); | 484 screenRect.move(windowRect.x, windowRect.y); |
| 488 } | 485 } |
| 489 | 486 |
| 490 return screenRect; | 487 return screenRect; |
| 491 } | 488 } |
| 492 | 489 |
| 493 void ChromeClientImpl::contentsSizeChanged(Frame* frame, const IntSize& size) const | 490 void ChromeClientImpl::contentsSizeChanged(Frame* frame, const IntSize& size) const |
| 494 { | 491 { |
| 495 WebFrameImpl* webframe = WebFrameImpl::FromFrame(frame); | 492 WebFrameImpl* webframe = WebFrameImpl::fromFrame(frame); |
| 496 if (webframe->client()) | 493 if (webframe->client()) |
| 497 webframe->client()->didChangeContentsSize(webframe, size); | 494 webframe->client()->didChangeContentsSize(webframe, size); |
| 498 } | 495 } |
| 499 | 496 |
| 500 void ChromeClientImpl::scrollbarsModeDidChange() const | 497 void ChromeClientImpl::scrollbarsModeDidChange() const |
| 501 { | 498 { |
| 502 } | 499 } |
| 503 | 500 |
| 504 void ChromeClientImpl::mouseDidMoveOverElement( | 501 void ChromeClientImpl::mouseDidMoveOverElement( |
| 505 const HitTestResult& result, unsigned modifierFlags) | 502 const HitTestResult& result, unsigned modifierFlags) |
| (...skipping 14 matching lines...) Expand all Loading... |
| 520 WebTextDirection textDirection = (dir == RTL) ? | 517 WebTextDirection textDirection = (dir == RTL) ? |
| 521 WebTextDirectionRightToLeft : | 518 WebTextDirectionRightToLeft : |
| 522 WebTextDirectionLeftToRight; | 519 WebTextDirectionLeftToRight; |
| 523 m_webView->client()->setToolTipText( | 520 m_webView->client()->setToolTipText( |
| 524 tooltipText, textDirection); | 521 tooltipText, textDirection); |
| 525 } | 522 } |
| 526 | 523 |
| 527 void ChromeClientImpl::print(Frame* frame) | 524 void ChromeClientImpl::print(Frame* frame) |
| 528 { | 525 { |
| 529 if (m_webView->client()) | 526 if (m_webView->client()) |
| 530 m_webView->client()->printPage(WebFrameImpl::FromFrame(frame)); | 527 m_webView->client()->printPage(WebFrameImpl::fromFrame(frame)); |
| 531 } | 528 } |
| 532 | 529 |
| 533 void ChromeClientImpl::exceededDatabaseQuota(Frame* frame, const String& databaseName) | 530 void ChromeClientImpl::exceededDatabaseQuota(Frame* frame, const String& databaseName) |
| 534 { | 531 { |
| 535 // set a reasonable quota for now -- 5Mb should be enough for anybody | 532 // set a reasonable quota for now -- 5Mb should be enough for anybody |
| 536 // TODO(dglazkov): this should be configurable | 533 // TODO(dglazkov): this should be configurable |
| 537 SecurityOrigin* origin = frame->document()->securityOrigin(); | 534 SecurityOrigin* origin = frame->document()->securityOrigin(); |
| 538 DatabaseTracker::tracker().setQuota(origin, 1024 * 1024 * 5); | 535 DatabaseTracker::tracker().setQuota(origin, 1024 * 1024 * 5); |
| 539 } | 536 } |
| 540 | 537 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 606 // Currently, Widget::setCursor is always called after this function in | 603 // Currently, Widget::setCursor is always called after this function in |
| 607 // EventHandler.cpp and since we don't want that we set a flag indicating | 604 // EventHandler.cpp and since we don't want that we set a flag indicating |
| 608 // that the next SetCursor call is to be ignored. | 605 // that the next SetCursor call is to be ignored. |
| 609 m_ignoreNextSetCursor = true; | 606 m_ignoreNextSetCursor = true; |
| 610 } | 607 } |
| 611 | 608 |
| 612 void ChromeClientImpl::formStateDidChange(const Node* node) | 609 void ChromeClientImpl::formStateDidChange(const Node* node) |
| 613 { | 610 { |
| 614 // The current history item is not updated yet. That happens lazily when | 611 // The current history item is not updated yet. That happens lazily when |
| 615 // WebFrame::currentHistoryItem is requested. | 612 // WebFrame::currentHistoryItem is requested. |
| 616 WebFrameImpl* webframe = WebFrameImpl::FromFrame(node->document()->frame()); | 613 WebFrameImpl* webframe = WebFrameImpl::fromFrame(node->document()->frame()); |
| 617 if (webframe->client()) | 614 if (webframe->client()) |
| 618 webframe->client()->didUpdateCurrentHistoryItem(webframe); | 615 webframe->client()->didUpdateCurrentHistoryItem(webframe); |
| 619 } | 616 } |
| 620 | 617 |
| 621 void ChromeClientImpl::getPopupMenuInfo(PopupContainer* popupContainer, | 618 void ChromeClientImpl::getPopupMenuInfo(PopupContainer* popupContainer, |
| 622 WebPopupMenuInfo* info) | 619 WebPopupMenuInfo* info) |
| 623 { | 620 { |
| 624 const Vector<PopupItem*>& inputItems = popupContainer->popupData(); | 621 const Vector<PopupItem*>& inputItems = popupContainer->popupData(); |
| 625 | 622 |
| 626 WebVector<WebPopupMenuInfo::Item> outputItems(inputItems.size()); | 623 WebVector<WebPopupMenuInfo::Item> outputItems(inputItems.size()); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 648 } | 645 } |
| 649 | 646 |
| 650 info->itemHeight = popupContainer->menuItemHeight(); | 647 info->itemHeight = popupContainer->menuItemHeight(); |
| 651 info->selectedIndex = popupContainer->selectedIndex(); | 648 info->selectedIndex = popupContainer->selectedIndex(); |
| 652 info->items.swap(outputItems); | 649 info->items.swap(outputItems); |
| 653 } | 650 } |
| 654 | 651 |
| 655 #if ENABLE(NOTIFICATIONS) | 652 #if ENABLE(NOTIFICATIONS) |
| 656 NotificationPresenter* ChromeClientImpl::notificationPresenter() const | 653 NotificationPresenter* ChromeClientImpl::notificationPresenter() const |
| 657 { | 654 { |
| 658 return m_webView->GetNotificationPresenter(); | 655 return m_webView->notificationPresenterImpl(); |
| 659 } | 656 } |
| 660 #endif | 657 #endif |
| 661 | 658 |
| 662 } // namespace WebKit | 659 } // namespace WebKit |
| OLD | NEW |