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

Side by Side Diff: third_party/WebKit/Source/web/WebViewImpl.cpp

Issue 2080623002: Revert "Remove OwnPtr from Blink." (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2011, 2012 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 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 #include "web/ValidationMessageClientImpl.h" 173 #include "web/ValidationMessageClientImpl.h"
174 #include "web/ViewportAnchor.h" 174 #include "web/ViewportAnchor.h"
175 #include "web/WebDevToolsAgentImpl.h" 175 #include "web/WebDevToolsAgentImpl.h"
176 #include "web/WebInputEventConversion.h" 176 #include "web/WebInputEventConversion.h"
177 #include "web/WebLocalFrameImpl.h" 177 #include "web/WebLocalFrameImpl.h"
178 #include "web/WebPagePopupImpl.h" 178 #include "web/WebPagePopupImpl.h"
179 #include "web/WebPluginContainerImpl.h" 179 #include "web/WebPluginContainerImpl.h"
180 #include "web/WebRemoteFrameImpl.h" 180 #include "web/WebRemoteFrameImpl.h"
181 #include "web/WebSettingsImpl.h" 181 #include "web/WebSettingsImpl.h"
182 #include "wtf/CurrentTime.h" 182 #include "wtf/CurrentTime.h"
183 #include "wtf/PtrUtil.h"
184 #include "wtf/RefPtr.h" 183 #include "wtf/RefPtr.h"
185 #include "wtf/TemporaryChange.h" 184 #include "wtf/TemporaryChange.h"
186 #include <memory>
187 185
188 #if USE(DEFAULT_RENDER_THEME) 186 #if USE(DEFAULT_RENDER_THEME)
189 #include "core/layout/LayoutThemeDefault.h" 187 #include "core/layout/LayoutThemeDefault.h"
190 #endif 188 #endif
191 189
192 // Get rid of WTF's pow define so we can use std::pow. 190 // Get rid of WTF's pow define so we can use std::pow.
193 #undef pow 191 #undef pow
194 #include <cmath> // for std::pow 192 #include <cmath> // for std::pow
195 193
196 // The following constants control parameters for automated scaling of webpages 194 // The following constants control parameters for automated scaling of webpages
(...skipping 27 matching lines...) Expand all
224 // Change the text zoom level by kTextSizeMultiplierRatio each time the user 222 // Change the text zoom level by kTextSizeMultiplierRatio each time the user
225 // zooms text in or out (ie., change by 20%). The min and max values limit 223 // zooms text in or out (ie., change by 20%). The min and max values limit
226 // text zoom to half and 3x the original text size. These three values match 224 // text zoom to half and 3x the original text size. These three values match
227 // those in Apple's port in WebKit/WebKit/WebView/WebView.mm 225 // those in Apple's port in WebKit/WebKit/WebView/WebView.mm
228 const double WebView::textSizeMultiplierRatio = 1.2; 226 const double WebView::textSizeMultiplierRatio = 1.2;
229 const double WebView::minTextSizeMultiplier = 0.5; 227 const double WebView::minTextSizeMultiplier = 0.5;
230 const double WebView::maxTextSizeMultiplier = 3.0; 228 const double WebView::maxTextSizeMultiplier = 3.0;
231 229
232 // Used to defer all page activity in cases where the embedder wishes to run 230 // Used to defer all page activity in cases where the embedder wishes to run
233 // a nested event loop. Using a stack enables nesting of message loop invocation s. 231 // a nested event loop. Using a stack enables nesting of message loop invocation s.
234 static Vector<std::unique_ptr<ScopedPageLoadDeferrer>>& pageLoadDeferrerStack() 232 static Vector<OwnPtr<ScopedPageLoadDeferrer>>& pageLoadDeferrerStack()
235 { 233 {
236 DEFINE_STATIC_LOCAL(Vector<std::unique_ptr<ScopedPageLoadDeferrer>>, deferre rStack, ()); 234 DEFINE_STATIC_LOCAL(Vector<OwnPtr<ScopedPageLoadDeferrer>>, deferrerStack, ( ));
237 return deferrerStack; 235 return deferrerStack;
238 } 236 }
239 237
240 // Ensure that the WebDragOperation enum values stay in sync with the original 238 // Ensure that the WebDragOperation enum values stay in sync with the original
241 // DragOperation constants. 239 // DragOperation constants.
242 #define STATIC_ASSERT_ENUM(a, b) \ 240 #define STATIC_ASSERT_ENUM(a, b) \
243 static_assert(static_cast<int>(a) == static_cast<int>(b), \ 241 static_assert(static_cast<int>(a) == static_cast<int>(b), \
244 "mismatching enum : " #a) 242 "mismatching enum : " #a)
245 STATIC_ASSERT_ENUM(DragOperationNone, WebDragOperationNone); 243 STATIC_ASSERT_ENUM(DragOperationNone, WebDragOperationNone);
246 STATIC_ASSERT_ENUM(DragOperationCopy, WebDragOperationCopy); 244 STATIC_ASSERT_ENUM(DragOperationCopy, WebDragOperationCopy);
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 Page::visitedStateChanged(linkHash); 355 Page::visitedStateChanged(linkHash);
358 } 356 }
359 357
360 void WebView::resetVisitedLinkState(bool invalidateVisitedLinkHashes) 358 void WebView::resetVisitedLinkState(bool invalidateVisitedLinkHashes)
361 { 359 {
362 Page::allVisitedStateChanged(invalidateVisitedLinkHashes); 360 Page::allVisitedStateChanged(invalidateVisitedLinkHashes);
363 } 361 }
364 362
365 void WebView::willEnterModalLoop() 363 void WebView::willEnterModalLoop()
366 { 364 {
367 pageLoadDeferrerStack().append(wrapUnique(new ScopedPageLoadDeferrer())); 365 pageLoadDeferrerStack().append(adoptPtr(new ScopedPageLoadDeferrer()));
368 } 366 }
369 367
370 void WebView::didExitModalLoop() 368 void WebView::didExitModalLoop()
371 { 369 {
372 DCHECK(pageLoadDeferrerStack().size()); 370 DCHECK(pageLoadDeferrerStack().size());
373 pageLoadDeferrerStack().removeLast(); 371 pageLoadDeferrerStack().removeLast();
374 } 372 }
375 373
376 void WebViewImpl::setMainFrame(WebFrame* frame) 374 void WebViewImpl::setMainFrame(WebFrame* frame)
377 { 375 {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 , m_baseBackgroundColor(Color::white) 441 , m_baseBackgroundColor(Color::white)
444 , m_backgroundColorOverride(Color::transparent) 442 , m_backgroundColorOverride(Color::transparent)
445 , m_zoomFactorOverride(0) 443 , m_zoomFactorOverride(0)
446 , m_userGestureObserved(false) 444 , m_userGestureObserved(false)
447 , m_shouldDispatchFirstVisuallyNonEmptyLayout(false) 445 , m_shouldDispatchFirstVisuallyNonEmptyLayout(false)
448 , m_shouldDispatchFirstLayoutAfterFinishedParsing(false) 446 , m_shouldDispatchFirstLayoutAfterFinishedParsing(false)
449 , m_shouldDispatchFirstLayoutAfterFinishedLoading(false) 447 , m_shouldDispatchFirstLayoutAfterFinishedLoading(false)
450 , m_displayMode(WebDisplayModeBrowser) 448 , m_displayMode(WebDisplayModeBrowser)
451 , m_elasticOverscroll(FloatSize()) 449 , m_elasticOverscroll(FloatSize())
452 , m_mutator(nullptr) 450 , m_mutator(nullptr)
453 , m_scheduler(wrapUnique(Platform::current()->currentThread()->scheduler()-> createWebViewScheduler(this).release())) 451 , m_scheduler(adoptPtr(Platform::current()->currentThread()->scheduler()->cr eateWebViewScheduler(this).release()))
454 , m_lastFrameTimeMonotonic(0) 452 , m_lastFrameTimeMonotonic(0)
455 { 453 {
456 Page::PageClients pageClients; 454 Page::PageClients pageClients;
457 pageClients.chromeClient = m_chromeClientImpl.get(); 455 pageClients.chromeClient = m_chromeClientImpl.get();
458 pageClients.contextMenuClient = &m_contextMenuClientImpl; 456 pageClients.contextMenuClient = &m_contextMenuClientImpl;
459 pageClients.editorClient = &m_editorClientImpl; 457 pageClients.editorClient = &m_editorClientImpl;
460 pageClients.spellCheckerClient = &m_spellCheckerClientImpl; 458 pageClients.spellCheckerClient = &m_spellCheckerClientImpl;
461 459
462 m_page = Page::createOrdinary(pageClients); 460 m_page = Page::createOrdinary(pageClients);
463 MediaKeysController::provideMediaKeysTo(*m_page, &m_mediaKeysClientImpl); 461 MediaKeysController::provideMediaKeysTo(*m_page, &m_mediaKeysClientImpl);
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
733 case WebInputEvent::GestureFlingStart: { 731 case WebInputEvent::GestureFlingStart: {
734 if (mainFrameImpl()->frame()->eventHandler().isScrollbarHandlingGestures ()) 732 if (mainFrameImpl()->frame()->eventHandler().isScrollbarHandlingGestures ())
735 break; 733 break;
736 endActiveFlingAnimation(); 734 endActiveFlingAnimation();
737 m_client->cancelScheduledContentIntents(); 735 m_client->cancelScheduledContentIntents();
738 m_positionOnFlingStart = WebPoint(event.x, event.y); 736 m_positionOnFlingStart = WebPoint(event.x, event.y);
739 m_globalPositionOnFlingStart = WebPoint(event.globalX, event.globalY); 737 m_globalPositionOnFlingStart = WebPoint(event.globalX, event.globalY);
740 m_flingModifier = event.modifiers; 738 m_flingModifier = event.modifiers;
741 m_flingSourceDevice = event.sourceDevice; 739 m_flingSourceDevice = event.sourceDevice;
742 DCHECK_NE(m_flingSourceDevice, WebGestureDeviceUninitialized); 740 DCHECK_NE(m_flingSourceDevice, WebGestureDeviceUninitialized);
743 std::unique_ptr<WebGestureCurve> flingCurve = wrapUnique(Platform::curre nt()->createFlingAnimationCurve(event.sourceDevice, WebFloatPoint(event.data.fli ngStart.velocityX, event.data.flingStart.velocityY), WebSize())); 741 OwnPtr<WebGestureCurve> flingCurve = adoptPtr(Platform::current()->creat eFlingAnimationCurve(event.sourceDevice, WebFloatPoint(event.data.flingStart.vel ocityX, event.data.flingStart.velocityY), WebSize()));
744 DCHECK(flingCurve); 742 DCHECK(flingCurve);
745 m_gestureAnimation = WebActiveGestureAnimation::createAtAnimationStart(s td::move(flingCurve), this); 743 m_gestureAnimation = WebActiveGestureAnimation::createAtAnimationStart(s td::move(flingCurve), this);
746 scheduleAnimation(); 744 scheduleAnimation();
747 eventResult = WebInputEventResult::HandledSystem; 745 eventResult = WebInputEventResult::HandledSystem;
748 746
749 // Plugins may need to see GestureFlingStart to balance 747 // Plugins may need to see GestureFlingStart to balance
750 // GestureScrollBegin (since the former replaces GestureScrollEnd when 748 // GestureScrollBegin (since the former replaces GestureScrollEnd when
751 // transitioning to a fling). 749 // transitioning to a fling).
752 PlatformGestureEventBuilder platformEvent(mainFrameImpl()->frameView(), event); 750 PlatformGestureEventBuilder platformEvent(mainFrameImpl()->frameView(), event);
753 // TODO(dtapuska): Why isn't the response used? 751 // TODO(dtapuska): Why isn't the response used?
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
954 return handleInputEvent(wheelEvent); 952 return handleInputEvent(wheelEvent);
955 } 953 }
956 954
957 void WebViewImpl::transferActiveWheelFlingAnimation(const WebActiveWheelFlingPar ameters& parameters) 955 void WebViewImpl::transferActiveWheelFlingAnimation(const WebActiveWheelFlingPar ameters& parameters)
958 { 956 {
959 TRACE_EVENT0("blink", "WebViewImpl::transferActiveWheelFlingAnimation"); 957 TRACE_EVENT0("blink", "WebViewImpl::transferActiveWheelFlingAnimation");
960 DCHECK(!m_gestureAnimation); 958 DCHECK(!m_gestureAnimation);
961 m_positionOnFlingStart = parameters.point; 959 m_positionOnFlingStart = parameters.point;
962 m_globalPositionOnFlingStart = parameters.globalPoint; 960 m_globalPositionOnFlingStart = parameters.globalPoint;
963 m_flingModifier = parameters.modifiers; 961 m_flingModifier = parameters.modifiers;
964 std::unique_ptr<WebGestureCurve> curve = wrapUnique(Platform::current()->cre ateFlingAnimationCurve(parameters.sourceDevice, WebFloatPoint(parameters.delta), parameters.cumulativeScroll)); 962 OwnPtr<WebGestureCurve> curve = adoptPtr(Platform::current()->createFlingAni mationCurve(parameters.sourceDevice, WebFloatPoint(parameters.delta), parameters .cumulativeScroll));
965 DCHECK(curve); 963 DCHECK(curve);
966 m_gestureAnimation = WebActiveGestureAnimation::createWithTimeOffset(std::mo ve(curve), this, parameters.startTime); 964 m_gestureAnimation = WebActiveGestureAnimation::createWithTimeOffset(std::mo ve(curve), this, parameters.startTime);
967 DCHECK_NE(parameters.sourceDevice, WebGestureDeviceUninitialized); 965 DCHECK_NE(parameters.sourceDevice, WebGestureDeviceUninitialized);
968 m_flingSourceDevice = parameters.sourceDevice; 966 m_flingSourceDevice = parameters.sourceDevice;
969 scheduleAnimation(); 967 scheduleAnimation();
970 } 968 }
971 969
972 bool WebViewImpl::endActiveFlingAnimation() 970 bool WebViewImpl::endActiveFlingAnimation()
973 { 971 {
974 if (m_gestureAnimation) { 972 if (m_gestureAnimation) {
(...skipping 1210 matching lines...) Expand 10 before | Expand all | Expand 10 after
2185 2183
2186 if (m_mouseCaptureNode && WebInputEvent::isMouseEventType(inputEvent.type)) { 2184 if (m_mouseCaptureNode && WebInputEvent::isMouseEventType(inputEvent.type)) {
2187 TRACE_EVENT1("input", "captured mouse event", "type", inputEvent.type); 2185 TRACE_EVENT1("input", "captured mouse event", "type", inputEvent.type);
2188 // Save m_mouseCaptureNode since mouseCaptureLost() will clear it. 2186 // Save m_mouseCaptureNode since mouseCaptureLost() will clear it.
2189 Node* node = m_mouseCaptureNode; 2187 Node* node = m_mouseCaptureNode;
2190 2188
2191 // Not all platforms call mouseCaptureLost() directly. 2189 // Not all platforms call mouseCaptureLost() directly.
2192 if (inputEvent.type == WebInputEvent::MouseUp) 2190 if (inputEvent.type == WebInputEvent::MouseUp)
2193 mouseCaptureLost(); 2191 mouseCaptureLost();
2194 2192
2195 std::unique_ptr<UserGestureIndicator> gestureIndicator; 2193 OwnPtr<UserGestureIndicator> gestureIndicator;
2196 2194
2197 AtomicString eventType; 2195 AtomicString eventType;
2198 switch (inputEvent.type) { 2196 switch (inputEvent.type) {
2199 case WebInputEvent::MouseMove: 2197 case WebInputEvent::MouseMove:
2200 eventType = EventTypeNames::mousemove; 2198 eventType = EventTypeNames::mousemove;
2201 break; 2199 break;
2202 case WebInputEvent::MouseLeave: 2200 case WebInputEvent::MouseLeave:
2203 eventType = EventTypeNames::mouseout; 2201 eventType = EventTypeNames::mouseout;
2204 break; 2202 break;
2205 case WebInputEvent::MouseDown: 2203 case WebInputEvent::MouseDown:
2206 eventType = EventTypeNames::mousedown; 2204 eventType = EventTypeNames::mousedown;
2207 gestureIndicator = wrapUnique(new UserGestureIndicator(DefinitelyPro cessingNewUserGesture)); 2205 gestureIndicator = adoptPtr(new UserGestureIndicator(DefinitelyProce ssingNewUserGesture));
2208 m_mouseCaptureGestureToken = gestureIndicator->currentToken(); 2206 m_mouseCaptureGestureToken = gestureIndicator->currentToken();
2209 break; 2207 break;
2210 case WebInputEvent::MouseUp: 2208 case WebInputEvent::MouseUp:
2211 eventType = EventTypeNames::mouseup; 2209 eventType = EventTypeNames::mouseup;
2212 gestureIndicator = wrapUnique(new UserGestureIndicator(m_mouseCaptur eGestureToken.release())); 2210 gestureIndicator = adoptPtr(new UserGestureIndicator(m_mouseCaptureG estureToken.release()));
2213 break; 2211 break;
2214 default: 2212 default:
2215 NOTREACHED(); 2213 NOTREACHED();
2216 } 2214 }
2217 2215
2218 node->dispatchMouseEvent( 2216 node->dispatchMouseEvent(
2219 PlatformMouseEventBuilder(mainFrameImpl()->frameView(), static_cast< const WebMouseEvent&>(inputEvent)), 2217 PlatformMouseEventBuilder(mainFrameImpl()->frameView(), static_cast< const WebMouseEvent&>(inputEvent)),
2220 eventType, static_cast<const WebMouseEvent&>(inputEvent).clickCount) ; 2218 eventType, static_cast<const WebMouseEvent&>(inputEvent).clickCount) ;
2221 return WebInputEventResult::HandledSystem; 2219 return WebInputEventResult::HandledSystem;
2222 } 2220 }
(...skipping 609 matching lines...) Expand 10 before | Expand all | Expand 10 after
2832 UseCounter::count(document, UseCounter::FixedRasterScaleBlurryContent); 2830 UseCounter::count(document, UseCounter::FixedRasterScaleBlurryContent);
2833 if (hasPotentialPerformanceRegression) 2831 if (hasPotentialPerformanceRegression)
2834 UseCounter::count(document, UseCounter::FixedRasterScalePotentialPerform anceRegression); 2832 UseCounter::count(document, UseCounter::FixedRasterScalePotentialPerform anceRegression);
2835 } 2833 }
2836 2834
2837 // WebView -------------------------------------------------------------------- 2835 // WebView --------------------------------------------------------------------
2838 2836
2839 WebSettingsImpl* WebViewImpl::settingsImpl() 2837 WebSettingsImpl* WebViewImpl::settingsImpl()
2840 { 2838 {
2841 if (!m_webSettings) 2839 if (!m_webSettings)
2842 m_webSettings = wrapUnique(new WebSettingsImpl(&m_page->settings(), m_de vToolsEmulator.get())); 2840 m_webSettings = adoptPtr(new WebSettingsImpl(&m_page->settings(), m_devT oolsEmulator.get()));
2843 DCHECK(m_webSettings); 2841 DCHECK(m_webSettings);
2844 return m_webSettings.get(); 2842 return m_webSettings.get();
2845 } 2843 }
2846 2844
2847 WebSettings* WebViewImpl::settings() 2845 WebSettings* WebViewImpl::settings()
2848 { 2846 {
2849 return settingsImpl(); 2847 return settingsImpl();
2850 } 2848 }
2851 2849
2852 WebString WebViewImpl::pageEncoding() const 2850 WebString WebViewImpl::pageEncoding() const
(...skipping 1616 matching lines...) Expand 10 before | Expand all | Expand 10 after
4469 m_page->setVisibilityState(static_cast<PageVisibilityState>(static_cast< int>(visibilityState)), isInitialState); 4467 m_page->setVisibilityState(static_cast<PageVisibilityState>(static_cast< int>(visibilityState)), isInitialState);
4470 4468
4471 bool visible = visibilityState == WebPageVisibilityStateVisible; 4469 bool visible = visibilityState == WebPageVisibilityStateVisible;
4472 if (m_layerTreeView) 4470 if (m_layerTreeView)
4473 m_layerTreeView->setVisible(visible); 4471 m_layerTreeView->setVisible(visible);
4474 m_scheduler->setPageVisible(visible); 4472 m_scheduler->setPageVisible(visible);
4475 } 4473 }
4476 4474
4477 void WebViewImpl::pointerLockMouseEvent(const WebInputEvent& event) 4475 void WebViewImpl::pointerLockMouseEvent(const WebInputEvent& event)
4478 { 4476 {
4479 std::unique_ptr<UserGestureIndicator> gestureIndicator; 4477 OwnPtr<UserGestureIndicator> gestureIndicator;
4480 AtomicString eventType; 4478 AtomicString eventType;
4481 switch (event.type) { 4479 switch (event.type) {
4482 case WebInputEvent::MouseDown: 4480 case WebInputEvent::MouseDown:
4483 eventType = EventTypeNames::mousedown; 4481 eventType = EventTypeNames::mousedown;
4484 gestureIndicator = wrapUnique(new UserGestureIndicator(DefinitelyProcess ingNewUserGesture)); 4482 gestureIndicator = adoptPtr(new UserGestureIndicator(DefinitelyProcessin gNewUserGesture));
4485 m_pointerLockGestureToken = gestureIndicator->currentToken(); 4483 m_pointerLockGestureToken = gestureIndicator->currentToken();
4486 break; 4484 break;
4487 case WebInputEvent::MouseUp: 4485 case WebInputEvent::MouseUp:
4488 eventType = EventTypeNames::mouseup; 4486 eventType = EventTypeNames::mouseup;
4489 gestureIndicator = wrapUnique(new UserGestureIndicator(m_pointerLockGest ureToken.release())); 4487 gestureIndicator = adoptPtr(new UserGestureIndicator(m_pointerLockGestur eToken.release()));
4490 break; 4488 break;
4491 case WebInputEvent::MouseMove: 4489 case WebInputEvent::MouseMove:
4492 eventType = EventTypeNames::mousemove; 4490 eventType = EventTypeNames::mousemove;
4493 break; 4491 break;
4494 default: 4492 default:
4495 NOTREACHED(); 4493 NOTREACHED();
4496 } 4494 }
4497 4495
4498 const WebMouseEvent& mouseEvent = static_cast<const WebMouseEvent&>(event); 4496 const WebMouseEvent& mouseEvent = static_cast<const WebMouseEvent&>(event);
4499 4497
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
4568 { 4566 {
4569 // TODO(oshima): Investigate if this should return the ScreenInfo's scale fa ctor rather than 4567 // TODO(oshima): Investigate if this should return the ScreenInfo's scale fa ctor rather than
4570 // page's scale factor, which can be 1 in use-zoom-for-dsf mode. 4568 // page's scale factor, which can be 1 in use-zoom-for-dsf mode.
4571 if (!page()) 4569 if (!page())
4572 return 1; 4570 return 1;
4573 4571
4574 return page()->deviceScaleFactor(); 4572 return page()->deviceScaleFactor();
4575 } 4573 }
4576 4574
4577 } // namespace blink 4575 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/WebViewImpl.h ('k') | third_party/WebKit/Source/web/WorkerContentSettingsClient.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698