1. 09 Sep, 2012 36 commits
    • paroga@webkit.org's avatar
      Add StringBuilder::appendNumber() and use it · 4d255977
      paroga@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=96030
      
      Reviewed by Eric Seidel.
      
      Also fix a bunch of append() vs. appendLiteral() issues in the surrounding code.
      
      Source/JavaScriptCore:
      
      * API/JSContextRef.cpp:
      (JSContextCreateBacktrace):
      * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
      * interpreter/Interpreter.h:
      (JSC::StackFrame::toString):
      
      Source/WebCore:
      
      * Modules/websockets/WebSocketHandshake.cpp:
      (WebCore::hostName):
      * bindings/v8/ScriptController.cpp:
      (WebCore::resourceString):
      * css/FontFeatureValue.cpp:
      (WebCore::FontFeatureValue::customCssText):
      * dom/Position.cpp:
      (WebCore::Position::formatForDebugger):
      * dom/Range.cpp:
      (WebCore::Range::formatForDebugger):
      * html/FormController.cpp:
      (WebCore::FormKeyGenerator::formKey):
      * html/HTMLAnchorElement.cpp:
      (WebCore::appendServerMapMousePosition):
      * html/canvas/CanvasRenderingContext2D.cpp:
      (WebCore::CanvasRenderingContext2D::font):
      * inspector/IdentifiersFactory.cpp:
      (WebCore::IdentifiersFactory::addProcessIdPrefixTo):
      * page/FrameTree.cpp:
      (WebCore::FrameTree::uniqueChildName):
      * page/SecurityOrigin.cpp:
      (WebCore::SecurityOrigin::toRawString):
      * platform/Decimal.cpp:
      (WebCore::Decimal::toString):
      * platform/network/ProxyServer.cpp:
      (WebCore::appendProxyServerString):
      * platform/text/TextStream.cpp:
      (WebCore::TextStream::operator<<):
      * platform/text/TextStream.h:
      * rendering/RenderTreeAsText.cpp:
      (WebCore::nodePosition):
      * xml/XMLErrors.cpp:
      (WebCore::XMLErrors::appendErrorMessage):
      
      Source/WTF:
      
      * wtf/DateMath.cpp:
      (WTF::makeRFC2822DateString):
      * wtf/text/StringBuilder.cpp:
      (WTF::StringBuilder::appendNumber):
      * wtf/text/StringBuilder.h:
      (StringBuilder):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@128014 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      4d255977
    • commit-queue@webkit.org's avatar
      [EFL] Wrong rendering results for square-button-appearance.html · 9c1ffd6a
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=85493
      
      Patch by KyungTae Kim <ktf.kim@samsung.com> on 2012-09-09
      Reviewed by Gyuyoung Kim.
      
      Source/WebCore:
      
      A square-button is an element that has '-webkit-appearance: square-button' style.
      
      If it is a block element,
      the RenderBlock::recomputeLogicalWidth recalculate the width from the padding values.
      
      But the recalculated width became wrong because the RenderThemeEfl::adjustSizeConstraints
      called from RenderThemeEfl::adjustButtonStyle adds padding values for a button.
      
      So, the adjustSizeConstraints must not be called for a square-button(SquareButtonPart).
      
      Test : fast/css/square-button-appearance.html
      
      * platform/efl/RenderThemeEfl.cpp:
      (WebCore::RenderThemeEfl::adjustButtonStyle): Call adjustSizeConstrains only for PushButtonPart and ButtonPart
      
      LayoutTests:
      
      Remove fast/css/square-button-appearance.html from TestExpectations because it became PASS.
      
      * platform/efl/TestExpectations:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@128013 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      9c1ffd6a
    • bashi@chromium.org's avatar
      [Chromium] Unreviewed test expectations update after r128002 · 7d823327
      bashi@chromium.org authored
      * platform/chromium-mac/inspector/console/command-line-api-getEventListeners-expected.txt: Copied from LayoutTests/platform/chromium/inspector/console/command-line-api-getEventListeners-expected.txt.
      * platform/chromium-win/inspector/console/command-line-api-getEventListeners-expected.txt: Renamed from LayoutTests/platform/chromium/inspector/console/command-line-api-getEventListeners-expected.txt.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@128012 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      7d823327
    • commit-queue@webkit.org's avatar
      [EFL][WK2] Minibrowser locks up when right clicking editable filed · 615ee1e8
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=96074
      
      Patch by Jinwoo Song <jinwoo7.song@samsung.com> on 2012-09-09
      Reviewed by Gyuyoung Kim.
      
      WebProcess crashes when the context menu type is SubmenuType and non-CROSS_PLATFORM_CONTEXT_MENUS is used.
      It is because platformSubMenu() in the ContextMenuItemEfl.cpp returns null. This patch implements the setSubMenu()
      and platformSubMenu() to set and return the subMenuItems.
      
      * platform/efl/ContextMenuItemEfl.cpp:
      (WebCore::ContextMenuItem::setSubMenu):
      (WebCore::ContextMenuItem::platformSubMenu):
      (WebCore):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@128011 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      615ee1e8
    • commit-queue@webkit.org's avatar
      Pass full target idl file path to CodeGenerator as a constructor argument. · c90dee06
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=96190
      
      Patch by Kangil Han <kangil.han@samsung.com> on 2012-09-09
      Reviewed by Kentaro Hara.
      
      Passing idl file path to CodeGenerator would be useful because CodeGenerator* family could manipulate it when creating derived header and cpp files.
      
      * bindings/scripts/CodeGenerator.pm:
      (new):
      (ProcessDocument):
      * bindings/scripts/generate-bindings.pl:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@128010 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      c90dee06
    • mitz@apple.com's avatar
      Try to fix the build after r128006. · 657ea27f
      mitz@apple.com authored
      * dom/Element.cpp:
      (WebCore::Element::boundsInRootViewSpace): Updated for rename.
      (WebCore::Element::getBoundingClientRect): Ditto.
      * svg/SVGElement.cpp:
      (WebCore::SVGElement::getBoundingBox): Renamed boundingBox() to this, to avoid clashing
      with the virtual function on Node. The 'get' prefix also indicates that the result is
      returned in an out parameter.
      * svg/SVGElement.h:
      (SVGElement):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@128009 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      657ea27f
    • paroga@webkit.org's avatar
      Replace WTF::numberToString() with String::numberToStringECMAScript() · 188ed48b
      paroga@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=96130
      
      Reviewed by Benjamin Poulain.
      
      The String class provides a nice wrapper for this function
      in the meantime, so just use it to avoid code duplication.
      
      * html/parser/HTMLParserIdioms.cpp:
      (WebCore::serializeForNumberType):
      * platform/Decimal.cpp:
      (WebCore::Decimal::fromDouble):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@128008 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      188ed48b
    • bashi@chromium.org's avatar
      [Chromium] Unreviewed gardening after r127907 · 968810bd
      bashi@chromium.org authored
      Fix CCRenderPassTest::copyShouldBeIdenticalExceptIdAndQuads
      
      * tests/CCRenderPassTest.cpp:
      (CCRenderPassSize): Changed type of m_id
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@128007 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      968810bd
    • eae@chromium.org's avatar
      Rename Node::getRect/getPixelSnappedRect and remove ContainerNode::getRect · a6f24b06
      eae@chromium.org authored
      https://bugs.webkit.org/show_bug.cgi?id=81413
      
      Reviewed by David Hyatt.
      
      Source/WebCore:
      
      Rename Node::getRect and getPixelSnappedRect to boundingBox and
      pixelSnappedBoundingBox respectively.
      
      Remove overridden getRect method from ContainerNode as it calculates the
      same rect as the Node implementation but in a more complicated and
      error-prone way. Also remove the getUpperLeftCorner/getLowerRightCorner
      support functions as they are no longer needed.
      
      No new tests, no change in functionality.
      
      * accessibility/AccessibilitySlider.cpp:
      (WebCore::AccessibilitySliderThumb::elementRect):
      Update to call boundingBox.
      
      * dom/ContainerNode.cpp:
      * dom/ContainerNode.h:
      Remove overridden getRect method and the getUpperLeftCorner/
      getLowerRightCorner support methods .
      
      * dom/Element.cpp:
      (WebCore::Element::scrollIntoView):
      (WebCore::Element::scrollIntoViewIfNeeded):
      (WebCore::Element::updateFocusAppearance):
      Update to call boundingBox.
      
      * dom/Node.h:
      * dom/Node.cpp:
      (WebCore::Node::boundingBox):
      Rename getRect to boundingBox.
      
      (WebCore::Node::pixelSnappedBoundingBox):
      Rename getPixelSnappedRect to pixelSnappedBoundingBox.
      
      * html/ColorInputType.cpp:
      (WebCore::ColorInputType::elementRectRelativeToRootView):
      * html/ValidationMessage.cpp:
      (WebCore::ValidationMessage::buildBubbleTree):
      * html/shadow/CalendarPickerElement.cpp:
      (WebCore::CalendarPickerElement::openPopup):
      * html/shadow/TextControlInnerElements.cpp:
      (WebCore::InputFieldSpeechButtonElement::startSpeechInput):
      * page/FrameView.cpp:
      (WebCore::FrameView::scrollElementToRect):
      (WebCore::FrameView::scrollToAnchor):
      * page/SpatialNavigation.cpp:
      (WebCore::nodeRectInAbsoluteCoordinates):
      Update to call boundingBox/pixelSnappedBoundingBox.
      
      Source/WebKit/chromium:
      
      Update WebViewImpl to call boundingBox/pixelSnappedBoundingBox.
      
      * src/WebViewImpl.cpp:
      (WebKit::WebViewImpl::computeBlockBounds):
      (WebKit::WebViewImpl::applyAutofillSuggestions):
      (WebKit::WebViewImpl::refreshAutofillPopup):
      
      Source/WebKit/efl:
      
      Update ewk_frame to call pixelSnappedBoundingBox.
      
      * ewk/ewk_frame.cpp:
      (ewk_frame_focused_element_geometry_get):
      
      Source/WebKit/gtk:
      
      Update ChromeClientGtk and webkitwebview to call pixelSnappedBoundingBox.
      
      * WebCoreSupport/ChromeClientGtk.cpp:
      (WebKit::ChromeClient::mouseDidMoveOverElement):
      * webkit/webkitwebview.cpp:
      (getLocationForKeyboardGeneratedContextMenu):
      (webkit_web_view_query_tooltip):
      
      Source/WebKit/qt:
      
      Update qwebelement and qwebpage to call pixelSnappedBoundingBox.
      
      * Api/qwebelement.cpp:
      (QWebElement::geometry):
      (QWebElement::render):
      * Api/qwebpage.cpp:
      (QWebPagePrivate::TouchAdjuster::findCandidatePointForTouch):
      
      Source/WebKit2:
      
      Update WebPage to call pixelSnappedBoundingBox.
      
      * WebProcess/WebPage/WebPage.cpp:
      (WebKit::WebPage::editorState):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@128006 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      a6f24b06
    • commit-queue@webkit.org's avatar
      [chromium] Do not delete texture backing structures on the main thread · 5e7928f9
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=96018
      
      Patch by Christopher Cameron <ccameron@chromium.org> on 2012-09-09
      Reviewed by James Robinson.
      
      Do not delete CCPrioritizedTexture::Backing structures on the main
      thread.  Instead, unlink them from their owning CCPrioritizedTexture
      in the main thread, and have the impl thread then delete all unlinked
      textures.
      
      This is towards having the main thread not access the m_backings set,
      which will allow the impl thread to traverse that set when deleting
      resources in response to GPU memory management events.
      
      Tested by existing eviction tests (CCLayerTreeHostTest's
      TestEvictTextures, LostContextAfterEvictTextures)
      
      Fix a place where single thread proxy wasn't setting the main thread
      blocked state correctly.
      
      * platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
      (WebCore::CCLayerTreeHost::unlinkAllContentTextures):
      (WebCore):
      (WebCore::CCLayerTreeHost::deleteUnlinkedTextures):
      * platform/graphics/chromium/cc/CCLayerTreeHost.h:
      (CCLayerTreeHost):
      * platform/graphics/chromium/cc/CCPrioritizedTextureManager.cpp:
      (WebCore::CCPrioritizedTextureManager::clearAllMemory):
      (WebCore::CCPrioritizedTextureManager::unlinkAllBackings):
      (WebCore):
      (WebCore::CCPrioritizedTextureManager::deleteAllUnlinkedBackings):
      * platform/graphics/chromium/cc/CCPrioritizedTextureManager.h:
      (CCPrioritizedTextureManager):
      * platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:
      (WebCore::CCSingleThreadProxy::commitAndComposite):
      * platform/graphics/chromium/cc/CCThreadProxy.cpp:
      (WebCore::CCThreadProxy::beginFrame):
      (WebCore::CCThreadProxy::beginFrameCompleteOnImplThread):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@128005 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      5e7928f9
    • jamesr@google.com's avatar
      Rebaseline media/video-zoom-controls on chromium-mac for subpixel change. · 5a4264df
      jamesr@google.com authored
      * platform/chromium-mac/media/video-zoom-controls-expected.txt:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@128004 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      5a4264df
    • weinig@apple.com's avatar
      Switch to entering the sandbox directly from main(), rather than waiting for... · 7d9c69d8
      weinig@apple.com authored
      Switch to entering the sandbox directly from main(), rather than waiting for the initialization message
      https://bugs.webkit.org/show_bug.cgi?id=96194
      
      Reviewed by Dan Bernstein.
      
      Source/WebKit2: 
      
      * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
      (WebKit::ProcessLauncher::launchProcess):
      Pass a client identifier to WebProcess as a command line argument
      so that it can be used to create private temporary and cache directories.
      
      * WebProcess/WebProcess.h:
      (WebProcess):
      * WebProcess/mac/WebProcessMac.mm:
      (WebKit::WebProcess::initializeSandbox):
      (WebKit::WebProcess::platformInitializeWebProcess):
      Expose the initializeSandbox() function and stop calling it from platformInitializeWebProcess()
      since it is now going to be called from WebProcessMain.  Also, move changing the current working
      directory to sandbox initialization function and replace use of creation parameters with just
      the client identifier.
      
      * WebProcess/com.apple.WebProcess.sb.in:
      Add some new exceptions that come from entering the sandbox earlier in the AppKit
      initialization process. Don't allow access to com.apple.coreservices.appleevents.
      
      * WebProcess/mac/WebProcessMainMac.mm:
      (WebKit::WebProcessMainXPC):
      (WebKit::WebProcessMain):
      Enter the sandbox explicitly, not waiting until the initialization message.  Also,
      since we now have an extra parameter for the client identifier, make the WebProcess
      launches the UIProcess code path work by extracting a client identifier from the 
      client executable path.
      
      WebKitLibraries: 
      
      Update WKSI with SPI for getting the bundle URL from an executable URL.
      
      * WebKitSystemInterface.h:
      * libWebKitSystemInterfaceLion.a:
      * libWebKitSystemInterfaceMountainLion.a:
      * libWebKitSystemInterfaceSnowLeopard.a:
      Adds WKCopyBundleURLForExecutableURL().
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@128003 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      7d9c69d8
    • kling@webkit.org's avatar
      EventListenerMap: Use Vector instead of HashMap as backend. · 80eb5f60
      kling@webkit.org authored
      <http://webkit.org/b/77982>
      
      Reviewed by Geoff Garen.
      
      Source/WebCore:
      
      Refactor EventListenerMap to store pair<AtomicString, EventListenerVector> in a Vector
      instead of using key/value HashMap stores. This is much more space efficient and actually
      faster since we were spending more time/effort managing the hash map than it costs us
      to iterate over and compare a couple of pointers. (It's very rare to have more than
      4 different event types registered in a single EventListenerMap.)
      
      This gets rid of the slightly hacky optimization for nodes with listeners of a single type,
      reducing the complexity of EventListenerMap greatly.
      
      ~1.1MB progression on Membuster. Also strong (20+ MB on larger patches) savings on WebKit
      bugzilla review pages, though they don't necessarily represent a common usecase.
      
      * dom/EventListenerMap.cpp:
      (WebCore::EventListenerMap::contains):
      (WebCore::EventListenerMap::clear):
      (WebCore::EventListenerMap::eventTypes):
      (WebCore::EventListenerMap::add):
      (WebCore::EventListenerMap::remove):
      (WebCore::EventListenerMap::find):
      (WebCore::EventListenerMap::removeFirstEventListenerCreatedFromMarkup):
      (WebCore::EventListenerMap::copyEventListenersNotCreatedFromMarkupToTarget):
      (WebCore::EventListenerIterator::EventListenerIterator):
      (WebCore::EventListenerIterator::nextListener):
      * dom/EventListenerMap.h:
      (WebCore::EventListenerMap::isEmpty):
      (WebCore::EventListenerMapEntry::EventListenerMapEntry):
      (EventListenerMapEntry):
      (EventListenerMap):
      (EventListenerIterator):
      
      LayoutTests:
      
      Rebaseline inspector test whose output depended on the internal ordering of event
      listeners (changed as listeners are no longer stored in an unordered HashMap.)
      
      * inspector/console/command-line-api-getEventListeners-expected.txt:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@128002 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      80eb5f60
    • lforschler@apple.com's avatar
      Build Fix. <rdar://problem/12260893> · f2820a8e
      lforschler@apple.com authored
              
      * platform/graphics/mac/WebGLLayer.mm:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127998 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      f2820a8e
    • commit-queue@webkit.org's avatar
      Unreviewed, rolling out r127979. · fc65bcd7
      commit-queue@webkit.org authored
      http://trac.webkit.org/changeset/127979
      https://bugs.webkit.org/show_bug.cgi?id=96217
      
      Appears to have broken the windows and linux builds (Requested
      by jamesr_ on #webkit).
      
      Patch by Sheriff Bot <webkit.review.bot@gmail.com> on 2012-09-09
      
      * bindings/scripts/CodeGeneratorV8.pm:
      (NativeToJSValue):
      * bindings/v8/V8DOMWrapper.h:
      (WebCore::V8DOMWrapper::convertEventTargetToV8Object):
      (V8DOMWrapper):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127997 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      fc65bcd7
    • jamesr@google.com's avatar
      [chromium] Export WebFilterOperation(FilterType, SkScalar[20]) constructor · bf53f98b
      jamesr@google.com authored
      https://bugs.webkit.org/show_bug.cgi?id=96215
      
      Reviewed by Adrienne Walker.
      
      Unlike the other WebFilterOperation constructors this one is defined out-of-line and so must be exported to be
      usable outside of WebKit.dll
      
      * chromium/public/WebFilterOperation.h:
      (WebFilterOperation):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127996 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      bf53f98b
    • jamesr@google.com's avatar
      [chromium] webkit_platform should only be linked into the webkit target · 1977bb15
      jamesr@google.com authored
      https://bugs.webkit.org/show_bug.cgi?id=96213
      
      Reviewed by Adrienne Walker.
      
      The Platform.gyp:webkit_platform target provides the implementation of several WEBKIT_EXPORTed symbols. It only
      makes sense as a target of WebKit.gyp:webkit, other targets shouldn't directly depend on it.
      
      Source/WebCore:
      
      * WebCore.gyp/WebCore.gyp:
      
      Source/WebKit/chromium:
      
      * WebKit.gyp:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127995 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      1977bb15
    • jamesr@google.com's avatar
      [chromium] Use WebCompositorSupport creation functions in GraphicsLayerChromiumTest · 9b0ff510
      jamesr@google.com authored
      https://bugs.webkit.org/show_bug.cgi?id=96212
      
      Reviewed by Adrienne Walker.
      
      The static ::create()s the test references currently are going away soon.
      
      * tests/GraphicsLayerChromiumTest.cpp:
      (WebKit::GraphicsLayerChromiumTest::GraphicsLayerChromiumTest):
      (WebKit::TEST_F):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127994 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      9b0ff510
    • dmazzoni@google.com's avatar
      Unreviewed.\n\nRebaselining 5 mac accessibility tests, skipping... · 4a3ee795
      dmazzoni@google.com authored
      Unreviewed.\n\nRebaselining 5 mac accessibility tests, skipping one.\n\nhttps://bugs.webkit.org/show_bug.cgi?id=96173
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127993 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      4a3ee795
    • dmazzoni@google.com's avatar
      Unreviewed, rolling out r127963. · 070dd3e2
      dmazzoni@google.com authored
      http://trac.webkit.org/changeset/127963
      https://bugs.webkit.org/show_bug.cgi?id=96173
      
      Inappropriately modified test, and not just expectations,
      without review. Will land changes to expectations only, and then
      upload a patch to modify the test for review.
      
      * accessibility/transformed-element-expected.txt:
      * platform/mac/accessibility/image-map2-expected.txt:
      * platform/mac/accessibility/internal-link-anchors2-expected.txt:
      * platform/mac/accessibility/table-detection-expected.txt:
      * platform/mac/accessibility/table-one-cell-expected.txt:
      * platform/mac/accessibility/update-children-when-aria-role-changes.html:
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127992 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      070dd3e2
    • paroga@webkit.org's avatar
      Make the String initialization on the function side of String::number() · 93e6a741
      paroga@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=95940
      
      Reviewed by Benjamin Poulain.
      
      Source/JavaScriptCore:
      
      * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
      
      Source/WebKit2:
      
      * win/WebKit2.def:
      * win/WebKit2CFLite.def:
      
      Source/WTF:
      
      Un-Inline String::number() to make the String initialization done on the function side
      instead of being on the caller side.
      
      * GNUmakefile.list.am:
      * WTF.gypi:
      * WTF.pro:
      * WTF.vcproj/WTF.vcproj:
      * WTF.xcodeproj/project.pbxproj:
      * wtf/CMakeLists.txt:
      * wtf/text/IntegerToStringConversion.cpp: Removed.
      * wtf/text/IntegerToStringConversion.h:
      (WTF::numberToStringImpl):
      (WTF::numberToStringSigned):
      (WTF::numberToStringUnsigned):
      * wtf/text/WTFString.cpp:
      (WTF::String::number):
      * wtf/text/WTFString.h:
      
      Tools:
      
      * TestWebKitAPI/Tests/WTF/IntegerToStringConversion.cpp:
      (testBoundaries):
      (testNumbers):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127991 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      93e6a741
    • rakuco@webkit.org's avatar
      [EFL][WK2] Mark sputnik/Conformance/07_Lexical_Conventions/7.4_Comments/S7.4_A5.html as flaky · 55960cfe
      rakuco@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=96210
      
      Unreviewed EFL gardening.
      
      Mark additional sputnik test as flaky on WK2 EFL build bot.
      
      Patch by Christophe Dumez <christophe.dumez@intel.com> on 2012-09-09
      
      * platform/efl-wk2/TestExpectations:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127990 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      55960cfe
    • commit-queue@webkit.org's avatar
      [EFL] Mark fast/innerHTML/innerHTML-iframe.html as flaky · 8b88c9fb
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=96209
      
      Unreviewed EFL gardening.
      
      Mark fast/innerHTML/innerHTML-iframe.html as flaky for
      both WK1 and WK2 EFL.
      
      Patch by Christophe Dumez <christophe.dumez@intel.com> on 2012-09-09
      
      * platform/efl-wk2/TestExpectations:
      * platform/efl/TestExpectations:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127989 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      8b88c9fb
    • pierre.rossi@gmail.com's avatar
      [WK2] expose element rect for color input type · e2489219
      pierre.rossi@gmail.com authored
      https://bugs.webkit.org/show_bug.cgi?id=91664
      
      Reviewed by Simon Hausmann.
      
      Source/WebKit2:
      
      In the same way we do for select elements already. This allows placing the picker
      in a sensible location.
      
      * UIProcess/API/efl/PageClientImpl.cpp: Update the function's signature.
      (WebKit::PageClientImpl::createColorChooserProxy): Ditto.
      * UIProcess/API/efl/PageClientImpl.h: Ditto.
      (PageClientImpl):
      * UIProcess/API/gtk/PageClientImpl.cpp:
      (WebKit::PageClientImpl::createColorChooserProxy): Ditto.
      * UIProcess/API/gtk/PageClientImpl.h: Ditto.
      (PageClientImpl):
      * UIProcess/API/mac/PageClientImpl.h: Ditto.
      (PageClientImpl):
      * UIProcess/API/mac/PageClientImpl.mm:
      (WebKit::PageClientImpl::createColorChooserProxy): Ditto.
      * UIProcess/API/qt/raw/qrawwebview.cpp:
      (QRawWebViewPrivate::createColorChooserProxy): Ditto.
      * UIProcess/API/qt/raw/qrawwebview_p_p.h: Ditto.
      (QRawWebViewPrivate):
      * UIProcess/PageClient.h: Ditto.
      (PageClient):
      * UIProcess/WebPageProxy.cpp:
      (WebKit::WebPageProxy::showColorChooser): Compute the rect mapped to the current view's transform.
      * UIProcess/WebPageProxy.h:
      (WebPageProxy):
      * UIProcess/WebPageProxy.messages.in:
      * UIProcess/qt/QtPageClient.cpp:
      (WebKit::QtPageClient::createColorChooserProxy):
      * UIProcess/qt/QtPageClient.h:
      (QtPageClient):
      * UIProcess/qt/WebColorChooserProxyQt.cpp:
      (ColorChooserContextObject):
      (WebKit::ColorChooserContextObject::ColorChooserContextObject):
      (WebKit::ColorChooserContextObject::elementRect):
      (WebKit::ColorChooserContextObject::accept):
      (WebKit::WebColorChooserProxyQt::WebColorChooserProxyQt):
      * UIProcess/qt/WebColorChooserProxyQt.h:
      (WebKit::WebColorChooserProxyQt::create):
      (WebColorChooserProxyQt):
      * UIProcess/win/WebView.cpp:
      (WebKit::WebView::createColorChooserProxy): Update the function's signature.
      * UIProcess/win/WebView.h:
      (WebView): Ditto.
      * WebProcess/WebCoreSupport/WebColorChooser.cpp:
      (WebKit::WebColorChooser::WebColorChooser):
      
      Tools:
      
      Update the QML logic in MiniBrowser to take advantage of this.
      The picker size is now hardcoded and we try to place it below the
      input element if possible.
      
      * MiniBrowser/qt/qml/ColorChooser.qml:
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127988 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      e2489219
    • ggaren@apple.com's avatar
      Rolled out <http://trac.webkit.org/changeset/127939> because it broke · e7996609
      ggaren@apple.com authored
      fast/js/named-function-expression.html.
      
          Refactored bytecode generator initialization to support moving captured vars around
          https://bugs.webkit.org/show_bug.cgi?id=96159
      
          Reviewed by Gavin Barraclough.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127987 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      e7996609
    • hausmann@webkit.org's avatar
      [Qt] Add missing files to the WebKit2 build on Windows · 24fc7760
      hausmann@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=96177
      
      Reviewed by Kenneth Rohde Christiansen.
      
      For the build on Windows we can re-use existing functionality from the Safari/Windows
      build, such as the IPC implementation.
      
      * Target.pri:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127986 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      24fc7760
    • rakuco@webkit.org's avatar
      [EFL][WK2] Gardening to make the bot green · 89350826
      rakuco@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=96208
      
      Unreviewed EFL gardening.
      
      Update TestExpectations to make the EFL WK2 bot green.
      
      Patch by Christophe Dumez <christophe.dumez@intel.com> on 2012-09-09
      
      * platform/efl-wk2/TestExpectations:
      * platform/efl-wk2/fast/events/mouseup-from-button2-expected.txt: Added. Test
      needs baseline for wk2 (better output).
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127985 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      89350826
    • anilsson@rim.com's avatar
      [BlackBerry] Fix flicker due to introduction of the fence extension. · 2fb87342
      anilsson@rim.com authored
      https://bugs.webkit.org/show_bug.cgi?id=96207
      
      Reviewed by George Staikos.
      
      Don't immediately add fence to garbage list, so it is destroyed
      after only one swap, for a set of tiles just because one tile in
      the set gets a new fence, the old fence may still not be signalled
      and before rendering the other tiles in the set we have to wait for it.
      
      * WebKitSupport/BackingStoreTile.cpp:
      (BlackBerry::WebKit::Fence::~Fence):
      (WebKit):
      * WebKitSupport/BackingStoreTile.h:
      (WebKit):
      (Fence):
      * WebKitSupport/SurfacePool.cpp:
      (BlackBerry::WebKit::SurfacePool::initialize):
      (BlackBerry::WebKit::SurfacePool::notifyBuffersComposited):
      (WebKit):
      (BlackBerry::WebKit::SurfacePool::destroyPlatformSync):
      * WebKitSupport/SurfacePool.h:
      (SurfacePool):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127984 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      2fb87342
    • commit-queue@webkit.org's avatar
      [WK2] Fix PLATFORM(WIN) vs. OS(WINDOWS) in various files · 479097a9
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=96178
      
      Patch by Simon Hausmann <simon.hausmann@nokia.com> on 2012-09-09
      Reviewed by Kenneth Rohde Christiansen.
      
      PLATFORM(WIN) is used in various places, where it is safe to use OS(WINDOWS) to allow
      the re-use of that code path in ports beyond Safari/Windows.
      
      * Platform/CoreIPC/BinarySemaphore.h:
      (BinarySemaphore):
      * Platform/CoreIPC/Connection.h:
      (Connection):
      * Platform/SharedMemory.h:
      (Handle):
      (SharedMemory):
      * Platform/WorkQueue.h:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127983 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      479097a9
    • rakuco@webkit.org's avatar
      [EFL] Unskip test cases passing reliably on the bots · 76f70150
      rakuco@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=96204
      
      Unreviewed EFL gardening.
      
      Unskip test cases that are passing reliably on the
      EFL build bots.
      
      Patch by Christophe Dumez <christophe.dumez@intel.com> on 2012-09-09
      
      * platform/efl-wk1/TestExpectations:
      * platform/efl-wk2/TestExpectations:
      * platform/efl/TestExpectations:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127982 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      76f70150
    • gyuyoung.kim@samsung.com's avatar
      [EFL] Fix build break when MEDIA_STREAM is enabled. · 162c1eb6
      gyuyoung.kim@samsung.com authored
      https://bugs.webkit.org/show_bug.cgi?id=96063
      
      Unreviewed. Fix build break when MEDIA_STREAM is enabled.
      
      
      * CMakeLists.txt:
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127981 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      162c1eb6
    • zandobersek@gmail.com's avatar
      Unreviewed GTK gardening. · 9f0ff821
      zandobersek@gmail.com authored
      Adding expectations for two crashing tests and two regressions.
      
      * platform/gtk/TestExpectations:
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127980 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      9f0ff821
    • abarth@webkit.org's avatar
      [V8] convertEventTargetToV8Object doesn't need to be overloaded · aef52b1b
      abarth@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=96195
      
      Reviewed by Kentaro Hara.
      
      WTF::getPtr solves this problem for us.
      
      * bindings/scripts/CodeGeneratorV8.pm:
      (NativeToJSValue):
      * bindings/v8/V8DOMWrapper.h:
      (V8DOMWrapper):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127979 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      aef52b1b
    • abarth@webkit.org's avatar
      [V8] V8PerContextData holds m_context using a v8::Handle rather than a v8::Persistent · ea1c4e08
      abarth@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=96193
      
      Reviewed by Kentaro Hara.
      
      There are two types of handles in V8: Local and Persistent. We are now
      permitted to keep Local handles in the heap because they get
      deallocated when the C++ stack unwinds and v8::HandleScope objects are
      destructed.
      
      V8PerContextData holds its m_context using the non-specific v8::Handle
      type. If we used a Local handle here, we'd have a memory safety
      problem. Thankfully, we use a Persistent handle, which need to be
      allocated and freed manually.
      
      This patch makes the type of V8PerContextData::m_context more specific
      to ensure that we never try to store a local handle in this variable.
      This patch should not have any behavior change because we were already
      storing a Persistent handle.
      
      * bindings/v8/V8PerContextData.h:
      (WebCore::V8PerContextData::create):
      (WebCore::V8PerContextData::V8PerContextData):
      (V8PerContextData):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127978 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      ea1c4e08
    • abarth@webkit.org's avatar
      [V8] V8DOMWindowShell does not need to be RefCounted · 0cb3a72e
      abarth@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=96192
      
      Reviewed by Kentaro Hara.
      
      V8DOMWindowShell holds a raw Frame pointer, which would point to
      unallocated memory if any object that wasn't owned by the frame took a
      reference to a V8DOMWindowShell. Thankfully, the only object that takes
      a reference to the V8DOMWindowShell is ScriptController, which is owned
      by the Frame.
      
      This patch stops V8DOMWindowShell from being RefCounted so that no
      other objects are tempted to take a reference to it in the future.
      
      * bindings/v8/ScriptController.h:
      (ScriptController):
      * bindings/v8/V8DOMWindowShell.cpp:
      (WebCore::V8DOMWindowShell::create):
      * bindings/v8/V8DOMWindowShell.h:
      (V8DOMWindowShell):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127977 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      0cb3a72e
    • abarth@webkit.org's avatar
      [V8] unsafeHandleToCurrentWorldContext doesn't need to exist · 00bb7e1a
      abarth@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=96191
      
      Reviewed by Kentaro Hara.
      
      Previously, we used this function when instantiating DOM wrappers. Now
      we get the context from the creationContext, so we don't need access to
      this unsafe handle. This patch inlines the function into its one other
      caller.
      
      * bindings/v8/ScriptController.cpp:
      (WebCore::ScriptController::currentWorldContext):
      * bindings/v8/ScriptController.h:
      (ScriptController):
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127976 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      00bb7e1a
  2. 08 Sep, 2012 4 commits
    • commit-queue@webkit.org's avatar
      [BlackBerry] Exiting fullscreen mode can leave user stuck without Browser menus · 48b3c4dc
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=96027
      
      Patch by Max Feil <mfeil@rim.com> on 2012-09-08
      Reviewed by Antonio Gomes.
      
      The changes for bug 87337 (landed as trunk svn revision 119119)
      introduced a bug. The same conditions are not checked on enter
      fullscreen vs. exit. Web sites such as http://videojs.com
      and youtube's mobile HTML5 player make the div container
      of the video element go fullscreen. This is allowed in
      WebPagePrivate::enterFullScreenForElement() but disallowed in
      WebPagePrivate::exitFullScreenForElement(). I am fixing this by
      allowing containers of video elements to exit fullscreen.
      
      * Api/WebPage.cpp:
      (BlackBerry::WebKit::WebPagePrivate::exitFullScreenForElement):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127975 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      48b3c4dc
    • benjamin@webkit.org's avatar
      Specialize nextBreakablePosition depending on breakNBSP · b7326682
      benjamin@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=96042
      
      Patch by Benjamin Poulain <bpoulain@apple.com> on 2012-09-08
      Reviewed by Eric Seidel.
      
      The speed of isBreakableSpace() is limited by the speed of the inner loop of nextBreakablePosition().
      The branches done to handle noBreakSpace can be simplified outside the loop
      to reduce the number of tests inside the loop.
      
      This patch split the code of nextBreakablePosition() in two function, depending if breakNBSP is true
      or false.
      
      If breakNBSP is true, isBreakableSpace() would return true on noBreakSpace.
      ->There is no need to test that value again for needsLineBreakIterator().
      ->There is no need to special case the switch() of isBreakableSpace() for noBreakSpace.
      
      If breakNBSP is false:
      ->isBreakableSpace() does not need to test for noBreakSpace.
      
      On x86_64, this improves PerformanceTests/Layout/line-layout.html by 2.8%.
      
      * rendering/break_lines.cpp:
      (WebCore::isBreakableSpace):
      (WebCore::nextBreakablePositionIgnoringNBSP):
      (WebCore::nextBreakablePosition):
      * rendering/break_lines.h:
      (WebCore::isBreakable): Remove the default value for breakNBSP, no caller is using it.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127974 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      b7326682
    • kling@webkit.org's avatar
      Give AtomicString SimpleClassVectorTraits. · 32b8eb38
      kling@webkit.org authored
      <http://webkit.org/b/96186>
      
      Reviewed by Karl Anders Carlsson.
      
      AtomicString can be initialized/moved/compared with memset/memcpy/memcmp,
      so add a VectorTraits<AtomicString> to make Vector<AtomicString> a little
      more efficient.
      
      * wtf/VectorTraits.h:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127973 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      32b8eb38
    • commit-queue@webkit.org's avatar
      [V8] DOM wrapper creation involves a bunch of sketchy code related to finding the Frame · f1acea6d
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=96147
      
      Patch by Adam Barth <abarth@chromium.org> on 2012-09-08
      Reviewed by Eric Seidel.
      
      Source/WebCore:
      
      Previously, we used the Frame when instantiating DOM wrappers. That's
      sketchy because not all DOM wrappers know how to find their Frame, and
      the Frame might be displaying a different document now anyway. This
      patch now gets all the information directly from the creation context.
      
      In addition, this patch gets the proper creation context in a few more
      cases, including Location.
      
      * bindings/scripts/CodeGeneratorV8.pm:
      (GetInternalFields):
      (GenerateNormalAttrGetter):
      (GenerateToV8Converters):
      (GenerateFunctionCallString):
      (NativeToJSValue):
      * bindings/scripts/test/V8/V8Float64Array.cpp:
      (WebCore::Float64ArrayV8Internal::fooCallback):
      (WebCore::V8Float64Array::wrapSlow):
      * bindings/scripts/test/V8/V8TestActiveDOMObject.cpp:
      (WebCore::V8TestActiveDOMObject::wrapSlow):
      * bindings/scripts/test/V8/V8TestCallback.cpp:
      (WebCore::V8TestCallback::callbackWithClass1Param):
      (WebCore::V8TestCallback::callbackWithClass2Param):
      (WebCore::V8TestCallback::callbackWithStringList):
      (WebCore::V8TestCallback::callbackRequiresThisToPass):
      * bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp:
      (WebCore::V8TestCustomNamedGetter::wrapSlow):
      * bindings/scripts/test/V8/V8TestEventConstructor.cpp:
      (WebCore::V8TestEventConstructor::wrapSlow):
      * bindings/scripts/test/V8/V8TestEventTarget.cpp:
      (WebCore::TestEventTargetV8Internal::itemCallback):
      (WebCore::V8TestEventTarget::wrapSlow):
      * bindings/scripts/test/V8/V8TestException.cpp:
      (WebCore::V8TestException::wrapSlow):
      * bindings/scripts/test/V8/V8TestInterface.cpp:
      (WebCore::TestInterfaceV8Internal::supplementalNodeAttrGetter):
      (WebCore::TestInterfaceV8Internal::supplementalMethod2Callback):
      (WebCore::V8TestInterface::wrapSlow):
      * bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp:
      (WebCore::V8TestMediaQueryListListener::wrapSlow):
      * bindings/scripts/test/V8/V8TestNamedConstructor.cpp:
      (WebCore::V8TestNamedConstructor::wrapSlow):
      * bindings/scripts/test/V8/V8TestNode.cpp:
      (WebCore::V8TestNode::wrapSlow):
      * bindings/scripts/test/V8/V8TestObj.cpp:
      (WebCore::TestObjV8Internal::testObjAttrAttrGetter):
      (WebCore::TestObjV8Internal::XMLObjAttrAttrGetter):
      (WebCore::TestObjV8Internal::typedArrayAttrAttrGetter):
      (WebCore::TestObjV8Internal::withScriptExecutionContextAttributeAttrGetter):
      (WebCore::TestObjV8Internal::withScriptStateAttributeRaisesAttrGetter):
      (WebCore::TestObjV8Internal::withScriptExecutionContextAttributeRaisesAttrGetter):
      (WebCore::TestObjV8Internal::withScriptExecutionContextAndScriptStateAttributeAttrGetter):
      (WebCore::TestObjV8Internal::withScriptExecutionContextAndScriptStateAttributeRaisesAttrGetter):
      (WebCore::TestObjV8Internal::withScriptExecutionContextAndScriptStateWithSpacesAttributeAttrGetter):
      (WebCore::TestObjV8Internal::withScriptArgumentsAndCallStackAttributeAttrGetter):
      (WebCore::TestObjV8Internal::contentDocumentAttrGetter):
      (WebCore::TestObjV8Internal::objMethodCallback):
      (WebCore::TestObjV8Internal::objMethodWithArgsCallback):
      (WebCore::TestObjV8Internal::methodThatRequiresAllArgsAndThrowsCallback):
      (WebCore::TestObjV8Internal::withScriptStateObjCallback):
      (WebCore::TestObjV8Internal::withScriptStateObjExceptionCallback):
      (WebCore::TestObjV8Internal::withScriptExecutionContextAndScriptStateObjExceptionCallback):
      (WebCore::TestObjV8Internal::withScriptExecutionContextAndScriptStateWithSpacesCallback):
      (WebCore::TestObjV8Internal::getSVGDocumentCallback):
      (WebCore::TestObjV8Internal::strictFunctionCallback):
      (WebCore::V8TestObj::wrapSlow):
      * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp:
      (WebCore::V8TestSerializedScriptValueInterface::wrapSlow):
      * bindings/v8/V8DOMWindowShell.cpp:
      (WebCore::V8DOMWindowShell::disposeContext):
      * bindings/v8/V8DOMWrapper.cpp:
      (WebCore::V8DOMWrapper::instantiateV8Object):
      * bindings/v8/V8DOMWrapper.h:
      (V8DOMWrapper):
      * bindings/v8/V8PerContextData.cpp:
      (WebCore):
      (WebCore::V8PerContextData::current):
      (WebCore::V8PerContextData::dispose):
      (WebCore::V8PerContextData::init):
      * bindings/v8/V8PerContextData.h:
      (V8PerContextData):
      
      LayoutTests:
      
      The V8 results for this test now match the JSC results. We can remove
      the chromium-specific baseline.
      
      * platform/chromium/fast/workers/storage/test-authorizer-sync-expected.txt: Removed.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127972 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      f1acea6d