Bug 848491 - Update Skia to r8495
authorGeorge Wright <gw@gwright.org.uk>
Tue, 02 Apr 2013 16:49:07 -0400
changeset 137322 b3e5868f25401ac2529fec6f3aaeaec6dc9e40b3
parent 137321 5f652fba751d17bddadcf20a92d4f21bc442295a
child 137323 ab576a03025ea6f78a473954ba89b97e97159803
push id24916
push userryanvm@gmail.com
push dateWed, 03 Jul 2013 18:15:02 +0000
treeherdermozilla-central@dcbbfcdf7bb4 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs848491
milestone25.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 848491 - Update Skia to r8495
gfx/skia/Makefile.in
gfx/skia/README_MOZILLA
gfx/skia/include/animator/SkAnimator.h
gfx/skia/include/animator/SkAnimatorView.h
gfx/skia/include/config/SkUserConfig.h
gfx/skia/include/core/Sk64.h
gfx/skia/include/core/SkAdvancedTypefaceMetrics.h
gfx/skia/include/core/SkAnnotation.h
gfx/skia/include/core/SkBitmap.h
gfx/skia/include/core/SkBounder.h
gfx/skia/include/core/SkCanvas.h
gfx/skia/include/core/SkChecksum.h
gfx/skia/include/core/SkClipStack.h
gfx/skia/include/core/SkColor.h
gfx/skia/include/core/SkColorFilter.h
gfx/skia/include/core/SkColorPriv.h
gfx/skia/include/core/SkColorShader.h
gfx/skia/include/core/SkComposeShader.h
gfx/skia/include/core/SkData.h
gfx/skia/include/core/SkDevice.h
gfx/skia/include/core/SkDeviceProperties.h
gfx/skia/include/core/SkDraw.h
gfx/skia/include/core/SkDrawFilter.h
gfx/skia/include/core/SkDrawLooper.h
gfx/skia/include/core/SkEmptyShader.h
gfx/skia/include/core/SkEndian.h
gfx/skia/include/core/SkFixed.h
gfx/skia/include/core/SkFlattenable.h
gfx/skia/include/core/SkFlattenableBuffers.h
gfx/skia/include/core/SkFloatBits.h
gfx/skia/include/core/SkFloatingPoint.h
gfx/skia/include/core/SkFontHost.h
gfx/skia/include/core/SkFontLCDConfig.h
gfx/skia/include/core/SkGraphics.h
gfx/skia/include/core/SkImage.h
gfx/skia/include/core/SkImageFilter.h
gfx/skia/include/core/SkImageTypes.h
gfx/skia/include/core/SkInstCnt.h
gfx/skia/include/core/SkLineClipper.h
gfx/skia/include/core/SkMMapStream.h
gfx/skia/include/core/SkMask.h
gfx/skia/include/core/SkMaskFilter.h
gfx/skia/include/core/SkMath.h
gfx/skia/include/core/SkMatrix.h
gfx/skia/include/core/SkMetaData.h
gfx/skia/include/core/SkOSFile.h
gfx/skia/include/core/SkPaint.h
gfx/skia/include/core/SkPath.h
gfx/skia/include/core/SkPathEffect.h
gfx/skia/include/core/SkPicture.h
gfx/skia/include/core/SkPixelRef.h
gfx/skia/include/core/SkPoint.h
gfx/skia/include/core/SkPostConfig.h
gfx/skia/include/core/SkPreConfig.h
gfx/skia/include/core/SkRRect.h
gfx/skia/include/core/SkRandom.h
gfx/skia/include/core/SkRasterizer.h
gfx/skia/include/core/SkReader32.h
gfx/skia/include/core/SkRect.h
gfx/skia/include/core/SkRefCnt.h
gfx/skia/include/core/SkScalar.h
gfx/skia/include/core/SkScalarCompare.h
gfx/skia/include/core/SkShader.h
gfx/skia/include/core/SkSize.h
gfx/skia/include/core/SkStream.h
gfx/skia/include/core/SkString.h
gfx/skia/include/core/SkStringUtils.h
gfx/skia/include/core/SkStrokeRec.h
gfx/skia/include/core/SkSurface.h
gfx/skia/include/core/SkTArray.h
gfx/skia/include/core/SkTDArray.h
gfx/skia/include/core/SkTDLinkedList.h
gfx/skia/include/core/SkTDStack.h
gfx/skia/include/core/SkTDict.h
gfx/skia/include/core/SkTInternalLList.h
gfx/skia/include/core/SkTLazy.h
gfx/skia/include/core/SkTSearch.h
gfx/skia/include/core/SkTemplates.h
gfx/skia/include/core/SkThread_platform.h
gfx/skia/include/core/SkTileGridPicture.h
gfx/skia/include/core/SkTime.h
gfx/skia/include/core/SkTrace.h
gfx/skia/include/core/SkTypeface.h
gfx/skia/include/core/SkTypes.h
gfx/skia/include/core/SkUnitMapper.h
gfx/skia/include/core/SkUtils.h
gfx/skia/include/core/SkWriter32.h
gfx/skia/include/core/SkXfermode.h
gfx/skia/include/effects/Sk1DPathEffect.h
gfx/skia/include/effects/Sk2DPathEffect.h
gfx/skia/include/effects/SkArithmeticMode.h
gfx/skia/include/effects/SkAvoidXfermode.h
gfx/skia/include/effects/SkBicubicImageFilter.h
gfx/skia/include/effects/SkBitmapSource.h
gfx/skia/include/effects/SkBlendImageFilter.h
gfx/skia/include/effects/SkBlurDrawLooper.h
gfx/skia/include/effects/SkBlurImageFilter.h
gfx/skia/include/effects/SkBlurMaskFilter.h
gfx/skia/include/effects/SkColorFilterImageFilter.h
gfx/skia/include/effects/SkColorMatrix.h
gfx/skia/include/effects/SkColorMatrixFilter.h
gfx/skia/include/effects/SkCornerPathEffect.h
gfx/skia/include/effects/SkDashPathEffect.h
gfx/skia/include/effects/SkDiscretePathEffect.h
gfx/skia/include/effects/SkDisplacementMapEffect.h
gfx/skia/include/effects/SkDrawExtraPathEffect.h
gfx/skia/include/effects/SkEmbossMaskFilter.h
gfx/skia/include/effects/SkGradientShader.h
gfx/skia/include/effects/SkImageFilterUtils.h
gfx/skia/include/effects/SkKernel33MaskFilter.h
gfx/skia/include/effects/SkLayerDrawLooper.h
gfx/skia/include/effects/SkLayerRasterizer.h
gfx/skia/include/effects/SkLightingImageFilter.h
gfx/skia/include/effects/SkMagnifierImageFilter.h
gfx/skia/include/effects/SkMatrixConvolutionImageFilter.h
gfx/skia/include/effects/SkMergeImageFilter.h
gfx/skia/include/effects/SkMorphologyImageFilter.h
gfx/skia/include/effects/SkOffsetImageFilter.h
gfx/skia/include/effects/SkPaintFlagsDrawFilter.h
gfx/skia/include/effects/SkPixelXorXfermode.h
gfx/skia/include/effects/SkPorterDuff.h
gfx/skia/include/effects/SkRectShaderImageFilter.h
gfx/skia/include/effects/SkSingleInputImageFilter.h
gfx/skia/include/effects/SkStippleMaskFilter.h
gfx/skia/include/effects/SkTableMaskFilter.h
gfx/skia/include/effects/SkTestImageFilters.h
gfx/skia/include/effects/SkTransparentShader.h
gfx/skia/include/gpu/GrAARectRenderer.h
gfx/skia/include/gpu/GrBackendEffectFactory.h
gfx/skia/include/gpu/GrCacheID.h
gfx/skia/include/gpu/GrClipData.h
gfx/skia/include/gpu/GrColor.h
gfx/skia/include/gpu/GrConfig.h
gfx/skia/include/gpu/GrContext.h
gfx/skia/include/gpu/GrContextFactory.h
gfx/skia/include/gpu/GrCustomStage.h
gfx/skia/include/gpu/GrCustomStageUnitTest.h
gfx/skia/include/gpu/GrDrawEffect.h
gfx/skia/include/gpu/GrEffect.h
gfx/skia/include/gpu/GrEffectStage.h
gfx/skia/include/gpu/GrEffectUnitTest.h
gfx/skia/include/gpu/GrFontScaler.h
gfx/skia/include/gpu/GrGlyph.h
gfx/skia/include/gpu/GrInstanceCounter.h
gfx/skia/include/gpu/GrKey.h
gfx/skia/include/gpu/GrMatrix.h
gfx/skia/include/gpu/GrNoncopyable.h
gfx/skia/include/gpu/GrOvalRenderer.h
gfx/skia/include/gpu/GrPaint.h
gfx/skia/include/gpu/GrPathRendererChain.h
gfx/skia/include/gpu/GrPoint.h
gfx/skia/include/gpu/GrProgramStageFactory.h
gfx/skia/include/gpu/GrRect.h
gfx/skia/include/gpu/GrRefCnt.h
gfx/skia/include/gpu/GrRenderTarget.h
gfx/skia/include/gpu/GrResource.h
gfx/skia/include/gpu/GrSamplerState.h
gfx/skia/include/gpu/GrScalar.h
gfx/skia/include/gpu/GrSurface.h
gfx/skia/include/gpu/GrTBackendEffectFactory.h
gfx/skia/include/gpu/GrTextContext.h
gfx/skia/include/gpu/GrTexture.h
gfx/skia/include/gpu/GrTextureAccess.h
gfx/skia/include/gpu/GrTypes.h
gfx/skia/include/gpu/GrTypesPriv.h
gfx/skia/include/gpu/GrUserConfig.h
gfx/skia/include/gpu/SkGpuCanvas.h
gfx/skia/include/gpu/SkGpuDevice.h
gfx/skia/include/gpu/SkGr.h
gfx/skia/include/gpu/SkGrPixelRef.h
gfx/skia/include/gpu/SkGrTexturePixelRef.h
gfx/skia/include/gpu/gl/GrGLConfig.h
gfx/skia/include/gpu/gl/GrGLConfig_chrome.h
gfx/skia/include/gpu/gl/GrGLExtensions.h
gfx/skia/include/gpu/gl/GrGLFunctions.h
gfx/skia/include/gpu/gl/GrGLInterface.h
gfx/skia/include/gpu/gl/SkANGLEGLContext.h
gfx/skia/include/gpu/gl/SkDebugGLContext.h
gfx/skia/include/gpu/gl/SkGLContext.h
gfx/skia/include/gpu/gl/SkGLContextHelper.h
gfx/skia/include/gpu/gl/SkMesaGLContext.h
gfx/skia/include/gpu/gl/SkNativeGLContext.h
gfx/skia/include/gpu/gl/SkNullGLContext.h
gfx/skia/include/images/SkBitmapRegionDecoder.h
gfx/skia/include/images/SkFlipPixelRef.h
gfx/skia/include/images/SkImageDecoder.h
gfx/skia/include/images/SkImageEncoder.h
gfx/skia/include/images/SkImageRef.h
gfx/skia/include/images/SkImages.h
gfx/skia/include/images/SkJpegUtility.h
gfx/skia/include/images/SkPageFlipper.h
gfx/skia/include/lazy/SkBitmapFactory.h
gfx/skia/include/lazy/SkImageCache.h
gfx/skia/include/lazy/SkLruImageCache.h
gfx/skia/include/lazy/SkPurgeableImageCache.h
gfx/skia/include/pdf/SkPDFDevice.h
gfx/skia/include/pdf/SkPDFDocument.h
gfx/skia/include/pipe/SkGPipe.h
gfx/skia/include/ports/SkFontConfigInterface.h
gfx/skia/include/ports/SkFontMgr.h
gfx/skia/include/ports/SkFontStyle.h
gfx/skia/include/ports/SkStream_Win.h
gfx/skia/include/ports/SkTypeface_android.h
gfx/skia/include/ports/SkTypeface_mac.h
gfx/skia/include/ports/SkTypeface_win.h
gfx/skia/include/svg/SkSVGBase.h
gfx/skia/include/text/SkTextLayout.h
gfx/skia/include/utils/SkBoundaryPatch.h
gfx/skia/include/utils/SkCamera.h
gfx/skia/include/utils/SkCondVar.h
gfx/skia/include/utils/SkCountdown.h
gfx/skia/include/utils/SkCubicInterval.h
gfx/skia/include/utils/SkDebugUtils.h
gfx/skia/include/utils/SkDeferredCanvas.h
gfx/skia/include/utils/SkDumpCanvas.h
gfx/skia/include/utils/SkInterpolator.h
gfx/skia/include/utils/SkMatrix44.h
gfx/skia/include/utils/SkNWayCanvas.h
gfx/skia/include/utils/SkParse.h
gfx/skia/include/utils/SkParsePaint.h
gfx/skia/include/utils/SkParsePath.h
gfx/skia/include/utils/SkPictureUtils.h
gfx/skia/include/utils/SkProxyCanvas.h
gfx/skia/include/utils/SkRTConf.h
gfx/skia/include/utils/SkRandom.h
gfx/skia/include/utils/SkRunnable.h
gfx/skia/include/utils/SkThreadPool.h
gfx/skia/include/utils/SkUnitMappers.h
gfx/skia/include/utils/SkWGL.h
gfx/skia/include/utils/mac/SkCGUtils.h
gfx/skia/include/views/SkBGViewArtist.h
gfx/skia/include/views/SkEvent.h
gfx/skia/include/views/SkEventSink.h
gfx/skia/include/views/SkKey.h
gfx/skia/include/views/SkOSMenu.h
gfx/skia/include/views/SkOSWindow_Android.h
gfx/skia/include/views/SkOSWindow_Mac.h
gfx/skia/include/views/SkOSWindow_NaCl.h
gfx/skia/include/views/SkOSWindow_SDL.h
gfx/skia/include/views/SkOSWindow_Unix.h
gfx/skia/include/views/SkOSWindow_Win.h
gfx/skia/include/views/SkOSWindow_iOS.h
gfx/skia/include/views/SkOSWindow_wxwidgets.h
gfx/skia/include/views/SkStackViewLayout.h
gfx/skia/include/views/SkTextBox.h
gfx/skia/include/views/SkTouchGesture.h
gfx/skia/include/views/SkView.h
gfx/skia/include/views/SkViewInflate.h
gfx/skia/include/views/SkWidget.h
gfx/skia/include/views/SkWindow.h
gfx/skia/include/views/animated/SkBorderView.h
gfx/skia/include/views/animated/SkScrollBarView.h
gfx/skia/include/xml/SkBML_WXMLParser.h
gfx/skia/include/xml/SkBML_XMLParser.h
gfx/skia/include/xml/SkDOM.h
gfx/skia/include/xml/SkJS.h
gfx/skia/include/xml/SkXMLWriter.h
gfx/skia/moz.build
gfx/skia/src/animator/SkAnimate.h
gfx/skia/src/animator/SkAnimateActive.cpp
gfx/skia/src/animator/SkAnimateBase.cpp
gfx/skia/src/animator/SkAnimateField.cpp
gfx/skia/src/animator/SkAnimateMaker.cpp
gfx/skia/src/animator/SkAnimateMaker.h
gfx/skia/src/animator/SkAnimateSet.h
gfx/skia/src/animator/SkAnimator.cpp
gfx/skia/src/animator/SkAnimatorScript.cpp
gfx/skia/src/animator/SkAnimatorScript.h
gfx/skia/src/animator/SkAnimatorScript2.cpp
gfx/skia/src/animator/SkBoundable.cpp
gfx/skia/src/animator/SkBoundable.h
gfx/skia/src/animator/SkBuildCondensedInfo.cpp
gfx/skia/src/animator/SkCondensedDebug.cpp
gfx/skia/src/animator/SkCondensedRelease.cpp
gfx/skia/src/animator/SkDisplayAdd.cpp
gfx/skia/src/animator/SkDisplayAdd.h
gfx/skia/src/animator/SkDisplayApply.cpp
gfx/skia/src/animator/SkDisplayApply.h
gfx/skia/src/animator/SkDisplayBounds.cpp
gfx/skia/src/animator/SkDisplayBounds.h
gfx/skia/src/animator/SkDisplayEvent.cpp
gfx/skia/src/animator/SkDisplayEvent.h
gfx/skia/src/animator/SkDisplayEvents.h
gfx/skia/src/animator/SkDisplayInclude.h
gfx/skia/src/animator/SkDisplayInput.h
gfx/skia/src/animator/SkDisplayList.cpp
gfx/skia/src/animator/SkDisplayList.h
gfx/skia/src/animator/SkDisplayMath.h
gfx/skia/src/animator/SkDisplayMovie.cpp
gfx/skia/src/animator/SkDisplayMovie.h
gfx/skia/src/animator/SkDisplayPost.cpp
gfx/skia/src/animator/SkDisplayPost.h
gfx/skia/src/animator/SkDisplayRandom.cpp
gfx/skia/src/animator/SkDisplayRandom.h
gfx/skia/src/animator/SkDisplayScreenplay.cpp
gfx/skia/src/animator/SkDisplayTypes.cpp
gfx/skia/src/animator/SkDisplayTypes.h
gfx/skia/src/animator/SkDisplayXMLParser.cpp
gfx/skia/src/animator/SkDisplayXMLParser.h
gfx/skia/src/animator/SkDisplayable.cpp
gfx/skia/src/animator/SkDisplayable.h
gfx/skia/src/animator/SkDraw3D.cpp
gfx/skia/src/animator/SkDraw3D.h
gfx/skia/src/animator/SkDrawBitmap.cpp
gfx/skia/src/animator/SkDrawBlur.cpp
gfx/skia/src/animator/SkDrawBlur.h
gfx/skia/src/animator/SkDrawClip.cpp
gfx/skia/src/animator/SkDrawColor.cpp
gfx/skia/src/animator/SkDrawDash.cpp
gfx/skia/src/animator/SkDrawDash.h
gfx/skia/src/animator/SkDrawDiscrete.cpp
gfx/skia/src/animator/SkDrawEmboss.cpp
gfx/skia/src/animator/SkDrawEmboss.h
gfx/skia/src/animator/SkDrawExtraPathEffect.cpp
gfx/skia/src/animator/SkDrawFull.cpp
gfx/skia/src/animator/SkDrawGradient.cpp
gfx/skia/src/animator/SkDrawGradient.h
gfx/skia/src/animator/SkDrawGroup.cpp
gfx/skia/src/animator/SkDrawGroup.h
gfx/skia/src/animator/SkDrawLine.h
gfx/skia/src/animator/SkDrawMatrix.cpp
gfx/skia/src/animator/SkDrawMatrix.h
gfx/skia/src/animator/SkDrawOval.cpp
gfx/skia/src/animator/SkDrawOval.h
gfx/skia/src/animator/SkDrawPaint.cpp
gfx/skia/src/animator/SkDrawPaint.h
gfx/skia/src/animator/SkDrawPath.cpp
gfx/skia/src/animator/SkDrawPath.h
gfx/skia/src/animator/SkDrawPoint.cpp
gfx/skia/src/animator/SkDrawRectangle.cpp
gfx/skia/src/animator/SkDrawRectangle.h
gfx/skia/src/animator/SkDrawSaveLayer.cpp
gfx/skia/src/animator/SkDrawText.cpp
gfx/skia/src/animator/SkDrawTextBox.cpp
gfx/skia/src/animator/SkDrawTextBox.h
gfx/skia/src/animator/SkDrawTo.cpp
gfx/skia/src/animator/SkDrawTransparentShader.cpp
gfx/skia/src/animator/SkDrawTransparentShader.h
gfx/skia/src/animator/SkDrawable.cpp
gfx/skia/src/animator/SkDump.cpp
gfx/skia/src/animator/SkDump.h
gfx/skia/src/animator/SkGetCondensedInfo.cpp
gfx/skia/src/animator/SkHitClear.cpp
gfx/skia/src/animator/SkHitTest.cpp
gfx/skia/src/animator/SkIntArray.h
gfx/skia/src/animator/SkMatrixParts.cpp
gfx/skia/src/animator/SkMemberInfo.cpp
gfx/skia/src/animator/SkMemberInfo.h
gfx/skia/src/animator/SkOperandInterpolator.h
gfx/skia/src/animator/SkOperandIterpolator.cpp
gfx/skia/src/animator/SkPaintParts.cpp
gfx/skia/src/animator/SkParseSVGPath.cpp
gfx/skia/src/animator/SkPathParts.cpp
gfx/skia/src/animator/SkPathParts.h
gfx/skia/src/animator/SkPostParts.cpp
gfx/skia/src/animator/SkScript.cpp
gfx/skia/src/animator/SkScript2.h
gfx/skia/src/animator/SkScriptRuntime.cpp
gfx/skia/src/animator/SkScriptTokenizer.cpp
gfx/skia/src/animator/SkSnapshot.cpp
gfx/skia/src/animator/SkSnapshot.h
gfx/skia/src/animator/SkTDArray_Experimental.h
gfx/skia/src/animator/SkTextToPath.cpp
gfx/skia/src/animator/SkTextToPath.h
gfx/skia/src/animator/SkTime.cpp
gfx/skia/src/animator/SkXMLAnimatorWriter.cpp
gfx/skia/src/animator/SkXMLAnimatorWriter.h
gfx/skia/src/core/ARGB32_Clamp_Bilinear_BitmapShader.h
gfx/skia/src/core/SkAAClip.cpp
gfx/skia/src/core/SkAdvancedTypefaceMetrics.cpp
gfx/skia/src/core/SkAlphaRuns.cpp
gfx/skia/src/core/SkAnnotation.cpp
gfx/skia/src/core/SkAntiRun.h
gfx/skia/src/core/SkAutoKern.h
gfx/skia/src/core/SkBBoxHierarchy.cpp
gfx/skia/src/core/SkBBoxHierarchy.h
gfx/skia/src/core/SkBBoxHierarchyRecord.cpp
gfx/skia/src/core/SkBBoxHierarchyRecord.h
gfx/skia/src/core/SkBBoxRecord.cpp
gfx/skia/src/core/SkBBoxRecord.h
gfx/skia/src/core/SkBitmap.cpp
gfx/skia/src/core/SkBitmapHeap.cpp
gfx/skia/src/core/SkBitmapHeap.h
gfx/skia/src/core/SkBitmapProcShader.cpp
gfx/skia/src/core/SkBitmapProcShader.h
gfx/skia/src/core/SkBitmapProcState.cpp
gfx/skia/src/core/SkBitmapProcState.h
gfx/skia/src/core/SkBitmapProcState_filter.h
gfx/skia/src/core/SkBitmapProcState_matrixProcs.cpp
gfx/skia/src/core/SkBitmapProcState_procs.h
gfx/skia/src/core/SkBitmapProcState_sample.h
gfx/skia/src/core/SkBitmapProcState_shaderproc.h
gfx/skia/src/core/SkBitmapSampler.cpp
gfx/skia/src/core/SkBitmap_scroll.cpp
gfx/skia/src/core/SkBlitBWMaskTemplate.h
gfx/skia/src/core/SkBlitMask_D32.cpp
gfx/skia/src/core/SkBlitRow_D16.cpp
gfx/skia/src/core/SkBlitRow_D32.cpp
gfx/skia/src/core/SkBlitRow_D4444.cpp
gfx/skia/src/core/SkBlitter.cpp
gfx/skia/src/core/SkBlitter.h
gfx/skia/src/core/SkBlitter_4444.cpp
gfx/skia/src/core/SkBlitter_A1.cpp
gfx/skia/src/core/SkBlitter_A8.cpp
gfx/skia/src/core/SkBlitter_ARGB32.cpp
gfx/skia/src/core/SkBlitter_RGB16.cpp
gfx/skia/src/core/SkBlitter_Sprite.cpp
gfx/skia/src/core/SkBuffer.h
gfx/skia/src/core/SkCanvas.cpp
gfx/skia/src/core/SkChunkAlloc.cpp
gfx/skia/src/core/SkClipStack.cpp
gfx/skia/src/core/SkColor.cpp
gfx/skia/src/core/SkColorFilter.cpp
gfx/skia/src/core/SkColorTable.cpp
gfx/skia/src/core/SkComposeShader.cpp
gfx/skia/src/core/SkConcaveToTriangles.cpp
gfx/skia/src/core/SkConcaveToTriangles.h
gfx/skia/src/core/SkConfig8888.h
gfx/skia/src/core/SkCordic.h
gfx/skia/src/core/SkCoreBlitters.h
gfx/skia/src/core/SkCubicClipper.cpp
gfx/skia/src/core/SkData.cpp
gfx/skia/src/core/SkDebug.cpp
gfx/skia/src/core/SkDescriptor.h
gfx/skia/src/core/SkDevice.cpp
gfx/skia/src/core/SkDeviceImageFilterProxy.h
gfx/skia/src/core/SkDeviceProfile.cpp
gfx/skia/src/core/SkDeviceProfile.h
gfx/skia/src/core/SkDither.cpp
gfx/skia/src/core/SkDraw.cpp
gfx/skia/src/core/SkDrawProcs.h
gfx/skia/src/core/SkEdge.cpp
gfx/skia/src/core/SkEdge.h
gfx/skia/src/core/SkEdgeBuilder.cpp
gfx/skia/src/core/SkEdgeClipper.cpp
gfx/skia/src/core/SkFDStream.cpp
gfx/skia/src/core/SkFDot6.h
gfx/skia/src/core/SkFilterProc.h
gfx/skia/src/core/SkFilterShader.h
gfx/skia/src/core/SkFlate.cpp
gfx/skia/src/core/SkFlattenable.cpp
gfx/skia/src/core/SkFloat.cpp
gfx/skia/src/core/SkFloatBits.cpp
gfx/skia/src/core/SkFontDescriptor.cpp
gfx/skia/src/core/SkFontDescriptor.h
gfx/skia/src/core/SkFontHost.cpp
gfx/skia/src/core/SkFontStream.cpp
gfx/skia/src/core/SkFontStream.h
gfx/skia/src/core/SkGeometry.cpp
gfx/skia/src/core/SkGlyphCache.cpp
gfx/skia/src/core/SkGlyphCache.h
gfx/skia/src/core/SkGraphics.cpp
gfx/skia/src/core/SkImageFilter.cpp
gfx/skia/src/core/SkInstCnt.cpp
gfx/skia/src/core/SkLineClipper.cpp
gfx/skia/src/core/SkMMapStream.cpp
gfx/skia/src/core/SkMallocPixelRef.cpp
gfx/skia/src/core/SkMask.cpp
gfx/skia/src/core/SkMaskFilter.cpp
gfx/skia/src/core/SkMaskGamma.cpp
gfx/skia/src/core/SkMaskGamma.h
gfx/skia/src/core/SkMath.cpp
gfx/skia/src/core/SkMathPriv.h
gfx/skia/src/core/SkMatrix.cpp
gfx/skia/src/core/SkMatrixUtils.h
gfx/skia/src/core/SkMemory_stdlib.cpp
gfx/skia/src/core/SkMetaData.cpp
gfx/skia/src/core/SkOrderedReadBuffer.cpp
gfx/skia/src/core/SkOrderedReadBuffer.h
gfx/skia/src/core/SkOrderedWriteBuffer.cpp
gfx/skia/src/core/SkOrderedWriteBuffer.h
gfx/skia/src/core/SkPaint.cpp
gfx/skia/src/core/SkPaintPriv.cpp
gfx/skia/src/core/SkPaintPriv.h
gfx/skia/src/core/SkPath.cpp
gfx/skia/src/core/SkPathEffect.cpp
gfx/skia/src/core/SkPathHeap.cpp
gfx/skia/src/core/SkPathHeap.h
gfx/skia/src/core/SkPathMeasure.cpp
gfx/skia/src/core/SkPathRef.h
gfx/skia/src/core/SkPicture.cpp
gfx/skia/src/core/SkPictureFlat.cpp
gfx/skia/src/core/SkPictureFlat.h
gfx/skia/src/core/SkPicturePlayback.cpp
gfx/skia/src/core/SkPicturePlayback.h
gfx/skia/src/core/SkPictureRecord.cpp
gfx/skia/src/core/SkPictureRecord.h
gfx/skia/src/core/SkPictureStateTree.cpp
gfx/skia/src/core/SkPictureStateTree.h
gfx/skia/src/core/SkPixelRef.cpp
gfx/skia/src/core/SkPtrRecorder.cpp
gfx/skia/src/core/SkPtrRecorder.h
gfx/skia/src/core/SkQuadClipper.cpp
gfx/skia/src/core/SkRRect.cpp
gfx/skia/src/core/SkRTree.cpp
gfx/skia/src/core/SkRTree.h
gfx/skia/src/core/SkRasterClip.cpp
gfx/skia/src/core/SkRasterClip.h
gfx/skia/src/core/SkRasterizer.cpp
gfx/skia/src/core/SkRect.cpp
gfx/skia/src/core/SkRefCnt.cpp
gfx/skia/src/core/SkRefDict.cpp
gfx/skia/src/core/SkRegion.cpp
gfx/skia/src/core/SkRegionPriv.h
gfx/skia/src/core/SkRegion_path.cpp
gfx/skia/src/core/SkScalerContext.cpp
gfx/skia/src/core/SkScalerContext.h
gfx/skia/src/core/SkScan.cpp
gfx/skia/src/core/SkScanPriv.h
gfx/skia/src/core/SkScan_AntiPath.cpp
gfx/skia/src/core/SkScan_Antihair.cpp
gfx/skia/src/core/SkScan_Hairline.cpp
gfx/skia/src/core/SkScan_Path.cpp
gfx/skia/src/core/SkShader.cpp
gfx/skia/src/core/SkSpriteBlitter.h
gfx/skia/src/core/SkSpriteBlitterTemplate.h
gfx/skia/src/core/SkSpriteBlitter_ARGB32.cpp
gfx/skia/src/core/SkSpriteBlitter_RGB16.cpp
gfx/skia/src/core/SkStream.cpp
gfx/skia/src/core/SkString.cpp
gfx/skia/src/core/SkStringUtils.cpp
gfx/skia/src/core/SkStroke.cpp
gfx/skia/src/core/SkStroke.h
gfx/skia/src/core/SkStrokeRec.cpp
gfx/skia/src/core/SkStrokerPriv.cpp
gfx/skia/src/core/SkStrokerPriv.h
gfx/skia/src/core/SkTLList.h
gfx/skia/src/core/SkTLS.cpp
gfx/skia/src/core/SkTSearch.cpp
gfx/skia/src/core/SkTSort.h
gfx/skia/src/core/SkTextToPathIter.h
gfx/skia/src/core/SkTileGrid.cpp
gfx/skia/src/core/SkTileGrid.h
gfx/skia/src/core/SkTileGridPicture.cpp
gfx/skia/src/core/SkTypeface.cpp
gfx/skia/src/core/SkTypefaceCache.cpp
gfx/skia/src/core/SkTypefacePriv.h
gfx/skia/src/core/SkUtils.cpp
gfx/skia/src/core/SkUtilsArm.cpp
gfx/skia/src/core/SkUtilsArm.h
gfx/skia/src/core/SkWriter32.cpp
gfx/skia/src/core/SkXfermode.cpp
gfx/skia/src/device/xps/SkXPSDevice.cpp
gfx/skia/src/effects/Sk1DPathEffect.cpp
gfx/skia/src/effects/Sk2DPathEffect.cpp
gfx/skia/src/effects/SkArithmeticMode.cpp
gfx/skia/src/effects/SkAvoidXfermode.cpp
gfx/skia/src/effects/SkBicubicImageFilter.cpp
gfx/skia/src/effects/SkBitmapSource.cpp
gfx/skia/src/effects/SkBlendImageFilter.cpp
gfx/skia/src/effects/SkBlurDrawLooper.cpp
gfx/skia/src/effects/SkBlurImageFilter.cpp
gfx/skia/src/effects/SkBlurMask.cpp
gfx/skia/src/effects/SkBlurMask.h
gfx/skia/src/effects/SkBlurMaskFilter.cpp
gfx/skia/src/effects/SkColorFilterImageFilter.cpp
gfx/skia/src/effects/SkColorFilters.cpp
gfx/skia/src/effects/SkColorMatrix.cpp
gfx/skia/src/effects/SkColorMatrixFilter.cpp
gfx/skia/src/effects/SkCornerPathEffect.cpp
gfx/skia/src/effects/SkDashPathEffect.cpp
gfx/skia/src/effects/SkDiscretePathEffect.cpp
gfx/skia/src/effects/SkDisplacementMapEffect.cpp
gfx/skia/src/effects/SkEmbossMask.cpp
gfx/skia/src/effects/SkEmbossMask.h
gfx/skia/src/effects/SkEmbossMaskFilter.cpp
gfx/skia/src/effects/SkImageFilterUtils.cpp
gfx/skia/src/effects/SkKernel33MaskFilter.cpp
gfx/skia/src/effects/SkLayerDrawLooper.cpp
gfx/skia/src/effects/SkLayerRasterizer.cpp
gfx/skia/src/effects/SkLightingImageFilter.cpp
gfx/skia/src/effects/SkMagnifierImageFilter.cpp
gfx/skia/src/effects/SkMatrixConvolutionImageFilter.cpp
gfx/skia/src/effects/SkMergeImageFilter.cpp
gfx/skia/src/effects/SkMorphologyImageFilter.cpp
gfx/skia/src/effects/SkOffsetImageFilter.cpp
gfx/skia/src/effects/SkPaintFlagsDrawFilter.cpp
gfx/skia/src/effects/SkPixelXorXfermode.cpp
gfx/skia/src/effects/SkPorterDuff.cpp
gfx/skia/src/effects/SkRectShaderImageFilter.cpp
gfx/skia/src/effects/SkRectShape.cpp
gfx/skia/src/effects/SkSingleInputImageFilter.cpp
gfx/skia/src/effects/SkStippleMaskFilter.cpp
gfx/skia/src/effects/SkTableColorFilter.cpp
gfx/skia/src/effects/SkTableMaskFilter.cpp
gfx/skia/src/effects/SkTestImageFilters.cpp
gfx/skia/src/effects/SkTransparentShader.cpp
gfx/skia/src/effects/gradients/SkBitmapCache.cpp
gfx/skia/src/effects/gradients/SkBitmapCache.h
gfx/skia/src/effects/gradients/SkClampRange.cpp
gfx/skia/src/effects/gradients/SkClampRange.h
gfx/skia/src/effects/gradients/SkGradientShader.cpp
gfx/skia/src/effects/gradients/SkGradientShaderPriv.h
gfx/skia/src/effects/gradients/SkLinearGradient.cpp
gfx/skia/src/effects/gradients/SkLinearGradient.h
gfx/skia/src/effects/gradients/SkRadialGradient.cpp
gfx/skia/src/effects/gradients/SkRadialGradient.h
gfx/skia/src/effects/gradients/SkSweepGradient.cpp
gfx/skia/src/effects/gradients/SkSweepGradient.h
gfx/skia/src/effects/gradients/SkTwoPointConicalGradient.cpp
gfx/skia/src/effects/gradients/SkTwoPointConicalGradient.h
gfx/skia/src/effects/gradients/SkTwoPointRadialGradient.cpp
gfx/skia/src/effects/gradients/SkTwoPointRadialGradient.h
gfx/skia/src/gpu/FlingState.cpp
gfx/skia/src/gpu/GrAAConvexPathRenderer.cpp
gfx/skia/src/gpu/GrAAConvexPathRenderer.h
gfx/skia/src/gpu/GrAAHairLinePathRenderer.cpp
gfx/skia/src/gpu/GrAAHairLinePathRenderer.h
gfx/skia/src/gpu/GrAARectRenderer.cpp
gfx/skia/src/gpu/GrAddPathRenderers_default.cpp
gfx/skia/src/gpu/GrAllocPool.cpp
gfx/skia/src/gpu/GrAllocPool.h
gfx/skia/src/gpu/GrAtlas.cpp
gfx/skia/src/gpu/GrAtlas.h
gfx/skia/src/gpu/GrBinHashKey.h
gfx/skia/src/gpu/GrBufferAllocPool.cpp
gfx/skia/src/gpu/GrBufferAllocPool.h
gfx/skia/src/gpu/GrCacheID.cpp
gfx/skia/src/gpu/GrClipData.cpp
gfx/skia/src/gpu/GrClipMaskCache.cpp
gfx/skia/src/gpu/GrClipMaskCache.h
gfx/skia/src/gpu/GrClipMaskManager.cpp
gfx/skia/src/gpu/GrClipMaskManager.h
gfx/skia/src/gpu/GrContext.cpp
gfx/skia/src/gpu/GrCustomStage.cpp
gfx/skia/src/gpu/GrDefaultPathRenderer.cpp
gfx/skia/src/gpu/GrDefaultPathRenderer.h
gfx/skia/src/gpu/GrDrawState.cpp
gfx/skia/src/gpu/GrDrawState.h
gfx/skia/src/gpu/GrDrawTarget.cpp
gfx/skia/src/gpu/GrDrawTarget.h
gfx/skia/src/gpu/GrDrawTargetCaps.h
gfx/skia/src/gpu/GrEffect.cpp
gfx/skia/src/gpu/GrGeometryBuffer.h
gfx/skia/src/gpu/GrGpu.cpp
gfx/skia/src/gpu/GrGpu.h
gfx/skia/src/gpu/GrGpuFactory.cpp
gfx/skia/src/gpu/GrGpuVertex.h
gfx/skia/src/gpu/GrInOrderDrawBuffer.cpp
gfx/skia/src/gpu/GrInOrderDrawBuffer.h
gfx/skia/src/gpu/GrIndexBuffer.h
gfx/skia/src/gpu/GrMatrix.cpp
gfx/skia/src/gpu/GrMemory.cpp
gfx/skia/src/gpu/GrMemoryPool.cpp
gfx/skia/src/gpu/GrOvalRenderer.cpp
gfx/skia/src/gpu/GrPath.h
gfx/skia/src/gpu/GrPathRenderer.cpp
gfx/skia/src/gpu/GrPathRenderer.h
gfx/skia/src/gpu/GrPathRendererChain.cpp
gfx/skia/src/gpu/GrPathRendererChain.h
gfx/skia/src/gpu/GrPathUtils.cpp
gfx/skia/src/gpu/GrPathUtils.h
gfx/skia/src/gpu/GrPlotMgr.h
gfx/skia/src/gpu/GrRandom.h
gfx/skia/src/gpu/GrRectanizer.cpp
gfx/skia/src/gpu/GrRectanizer.h
gfx/skia/src/gpu/GrRectanizer_fifo.cpp
gfx/skia/src/gpu/GrRedBlackTree.h
gfx/skia/src/gpu/GrReducedClip.cpp
gfx/skia/src/gpu/GrReducedClip.h
gfx/skia/src/gpu/GrRenderTarget.cpp
gfx/skia/src/gpu/GrResource.cpp
gfx/skia/src/gpu/GrResourceCache.cpp
gfx/skia/src/gpu/GrResourceCache.h
gfx/skia/src/gpu/GrSWMaskHelper.cpp
gfx/skia/src/gpu/GrSWMaskHelper.h
gfx/skia/src/gpu/GrSoftwarePathRenderer.cpp
gfx/skia/src/gpu/GrSoftwarePathRenderer.h
gfx/skia/src/gpu/GrStencilAndCoverPathRenderer.cpp
gfx/skia/src/gpu/GrStencilAndCoverPathRenderer.h
gfx/skia/src/gpu/GrStencilBuffer.cpp
gfx/skia/src/gpu/GrStencilBuffer.h
gfx/skia/src/gpu/GrSurface.cpp
gfx/skia/src/gpu/GrTBSearch.h
gfx/skia/src/gpu/GrTDArray.h
gfx/skia/src/gpu/GrTHashCache.h
gfx/skia/src/gpu/GrTLList.h
gfx/skia/src/gpu/GrTextContext.cpp
gfx/skia/src/gpu/GrTextStrike.cpp
gfx/skia/src/gpu/GrTextStrike.h
gfx/skia/src/gpu/GrTextStrike_impl.h
gfx/skia/src/gpu/GrTexture.cpp
gfx/skia/src/gpu/GrTextureAccess.cpp
gfx/skia/src/gpu/GrVertexBuffer.h
gfx/skia/src/gpu/SkGpuCanvas.cpp
gfx/skia/src/gpu/SkGpuDevice.cpp
gfx/skia/src/gpu/SkGr.cpp
gfx/skia/src/gpu/SkGrFontScaler.cpp
gfx/skia/src/gpu/SkGrPixelRef.cpp
gfx/skia/src/gpu/android/GrGLCreateNativeInterface_android.cpp
gfx/skia/src/gpu/android/SkNativeGLContext_android.cpp
gfx/skia/src/gpu/app-android.cpp
gfx/skia/src/gpu/effects/Gr1DKernelEffect.h
gfx/skia/src/gpu/effects/GrColorTableEffect.cpp
gfx/skia/src/gpu/effects/GrColorTableEffect.h
gfx/skia/src/gpu/effects/GrConfigConversionEffect.cpp
gfx/skia/src/gpu/effects/GrConfigConversionEffect.h
gfx/skia/src/gpu/effects/GrConvolutionEffect.cpp
gfx/skia/src/gpu/effects/GrConvolutionEffect.h
gfx/skia/src/gpu/effects/GrSimpleTextureEffect.cpp
gfx/skia/src/gpu/effects/GrSimpleTextureEffect.h
gfx/skia/src/gpu/effects/GrSingleTextureEffect.cpp
gfx/skia/src/gpu/effects/GrSingleTextureEffect.h
gfx/skia/src/gpu/effects/GrTextureDomainEffect.cpp
gfx/skia/src/gpu/effects/GrTextureDomainEffect.h
gfx/skia/src/gpu/effects/GrTextureStripAtlas.cpp
gfx/skia/src/gpu/effects/GrTextureStripAtlas.h
gfx/skia/src/gpu/gl/GrGLBufferImpl.cpp
gfx/skia/src/gpu/gl/GrGLBufferImpl.h
gfx/skia/src/gpu/gl/GrGLCaps.cpp
gfx/skia/src/gpu/gl/GrGLCaps.h
gfx/skia/src/gpu/gl/GrGLContext.cpp
gfx/skia/src/gpu/gl/GrGLContext.h
gfx/skia/src/gpu/gl/GrGLContextInfo.cpp
gfx/skia/src/gpu/gl/GrGLContextInfo.h
gfx/skia/src/gpu/gl/GrGLCreateNullInterface.cpp
gfx/skia/src/gpu/gl/GrGLDefines.h
gfx/skia/src/gpu/gl/GrGLEffect.cpp
gfx/skia/src/gpu/gl/GrGLEffect.h
gfx/skia/src/gpu/gl/GrGLEffectMatrix.cpp
gfx/skia/src/gpu/gl/GrGLEffectMatrix.h
gfx/skia/src/gpu/gl/GrGLExtensions.cpp
gfx/skia/src/gpu/gl/GrGLIRect.h
gfx/skia/src/gpu/gl/GrGLIndexBuffer.cpp
gfx/skia/src/gpu/gl/GrGLIndexBuffer.h
gfx/skia/src/gpu/gl/GrGLInterface.cpp
gfx/skia/src/gpu/gl/GrGLNoOpInterface.cpp
gfx/skia/src/gpu/gl/GrGLNoOpInterface.h
gfx/skia/src/gpu/gl/GrGLPath.cpp
gfx/skia/src/gpu/gl/GrGLProgram.cpp
gfx/skia/src/gpu/gl/GrGLProgram.h
gfx/skia/src/gpu/gl/GrGLProgramDesc.cpp
gfx/skia/src/gpu/gl/GrGLProgramDesc.h
gfx/skia/src/gpu/gl/GrGLProgramStage.cpp
gfx/skia/src/gpu/gl/GrGLProgramStage.h
gfx/skia/src/gpu/gl/GrGLRenderTarget.cpp
gfx/skia/src/gpu/gl/GrGLRenderTarget.h
gfx/skia/src/gpu/gl/GrGLSL.cpp
gfx/skia/src/gpu/gl/GrGLSL.h
gfx/skia/src/gpu/gl/GrGLShaderBuilder.cpp
gfx/skia/src/gpu/gl/GrGLShaderBuilder.h
gfx/skia/src/gpu/gl/GrGLShaderVar.h
gfx/skia/src/gpu/gl/GrGLStencilBuffer.cpp
gfx/skia/src/gpu/gl/GrGLStencilBuffer.h
gfx/skia/src/gpu/gl/GrGLTexture.cpp
gfx/skia/src/gpu/gl/GrGLTexture.h
gfx/skia/src/gpu/gl/GrGLUniformManager.cpp
gfx/skia/src/gpu/gl/GrGLUniformManager.h
gfx/skia/src/gpu/gl/GrGLUtil.cpp
gfx/skia/src/gpu/gl/GrGLUtil.h
gfx/skia/src/gpu/gl/GrGLVertexArray.cpp
gfx/skia/src/gpu/gl/GrGLVertexArray.h
gfx/skia/src/gpu/gl/GrGLVertexBuffer.cpp
gfx/skia/src/gpu/gl/GrGLVertexBuffer.h
gfx/skia/src/gpu/gl/GrGpuGL.cpp
gfx/skia/src/gpu/gl/GrGpuGL.h
gfx/skia/src/gpu/gl/GrGpuGL_program.cpp
gfx/skia/src/gpu/gl/SkGLContext.cpp
gfx/skia/src/gpu/gl/SkGLContextHelper.cpp
gfx/skia/src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp
gfx/skia/src/gpu/gl/android/SkNativeGLContext_android.cpp
gfx/skia/src/gpu/gl/angle/GrGLCreateANGLEInterface.cpp
gfx/skia/src/gpu/gl/debug/GrDebugGL.cpp
gfx/skia/src/gpu/gl/debug/GrDebugGL.h
gfx/skia/src/gpu/gl/debug/GrGLCreateDebugInterface.cpp
gfx/skia/src/gpu/gl/debug/GrTextureUnitObj.cpp
gfx/skia/src/gpu/gl/debug/GrVertexArrayObj.h
gfx/skia/src/gpu/gl/iOS/GrGLCreateNativeInterface_iOS.cpp
gfx/skia/src/gpu/gl/iOS/SkNativeGLContext_iOS.mm
gfx/skia/src/gpu/gl/mac/GrGLCreateNativeInterface_mac.cpp
gfx/skia/src/gpu/gl/mac/SkNativeGLContext_mac.cpp
gfx/skia/src/gpu/gl/mesa/GrGLCreateMesaInterface.cpp
gfx/skia/src/gpu/gl/mesa/SkMesaGLContext.cpp
gfx/skia/src/gpu/gl/mesa/osmesa_wrapper.h
gfx/skia/src/gpu/gl/nacl/SkNativeGLContext_nacl.cpp
gfx/skia/src/gpu/gl/unix/GrGLCreateNativeInterface_unix.cpp
gfx/skia/src/gpu/gl/win/GrGLCreateNativeInterface_win.cpp
gfx/skia/src/gpu/gl/win/SkNativeGLContext_win.cpp
gfx/skia/src/gpu/gr_hello_world.cpp
gfx/skia/src/gpu/gr_unittests.cpp
gfx/skia/src/gpu/ios/GrGLDefaultInterface_iOS.cpp
gfx/skia/src/image/SkDataPixelRef.cpp
gfx/skia/src/image/SkImage.cpp
gfx/skia/src/image/SkImagePriv.cpp
gfx/skia/src/image/SkImagePriv.h
gfx/skia/src/image/SkImage_Base.h
gfx/skia/src/image/SkImage_Codec.cpp
gfx/skia/src/image/SkImage_Gpu.cpp
gfx/skia/src/image/SkImage_Picture.cpp
gfx/skia/src/image/SkImage_Raster.cpp
gfx/skia/src/image/SkSurface.cpp
gfx/skia/src/image/SkSurface_Base.h
gfx/skia/src/image/SkSurface_Gpu.cpp
gfx/skia/src/image/SkSurface_Picture.cpp
gfx/skia/src/image/SkSurface_Raster.cpp
gfx/skia/src/images/SkBitmapRegionDecoder.cpp
gfx/skia/src/images/SkFDStream.cpp
gfx/skia/src/images/SkFlipPixelRef.cpp
gfx/skia/src/images/SkImageDecoder.cpp
gfx/skia/src/images/SkImageDecoder_Factory.cpp
gfx/skia/src/images/SkImageDecoder_libbmp.cpp
gfx/skia/src/images/SkImageDecoder_libgif.cpp
gfx/skia/src/images/SkImageDecoder_libico.cpp
gfx/skia/src/images/SkImageDecoder_libjpeg.cpp
gfx/skia/src/images/SkImageDecoder_libpng.cpp
gfx/skia/src/images/SkImageDecoder_libwebp.cpp
gfx/skia/src/images/SkImageDecoder_wbmp.cpp
gfx/skia/src/images/SkImageEncoder.cpp
gfx/skia/src/images/SkImageEncoder_Factory.cpp
gfx/skia/src/images/SkImageRef.cpp
gfx/skia/src/images/SkImageRefPool.cpp
gfx/skia/src/images/SkImageRefPool.h
gfx/skia/src/images/SkImageRef_GlobalPool.cpp
gfx/skia/src/images/SkImageRef_ashmem.cpp
gfx/skia/src/images/SkImageRef_ashmem.h
gfx/skia/src/images/SkImages.cpp
gfx/skia/src/images/SkJpegUtility.cpp
gfx/skia/src/images/SkJpegUtility.h
gfx/skia/src/images/SkMovie.cpp
gfx/skia/src/images/SkMovie_gif.cpp
gfx/skia/src/images/SkPageFlipper.cpp
gfx/skia/src/images/SkScaledBitmapSampler.h
gfx/skia/src/images/transform_scanline.h
gfx/skia/src/lazy/SkBitmapFactory.cpp
gfx/skia/src/lazy/SkLazyPixelRef.cpp
gfx/skia/src/lazy/SkLazyPixelRef.h
gfx/skia/src/lazy/SkLruImageCache.cpp
gfx/skia/src/lazy/SkPurgeableImageCache.cpp
gfx/skia/src/lazy/SkPurgeableMemoryBlock.h
gfx/skia/src/lazy/SkPurgeableMemoryBlock_common.cpp
gfx/skia/src/opts/SkBitmapProcState_matrixProcs_neon.cpp
gfx/skia/src/opts/SkBitmapProcState_matrix_clamp_neon.h
gfx/skia/src/opts/SkBitmapProcState_matrix_repeat_neon.h
gfx/skia/src/opts/SkBitmapProcState_opts_SSE2.cpp
gfx/skia/src/opts/SkBitmapProcState_opts_SSSE3.cpp
gfx/skia/src/opts/SkBitmapProcState_opts_arm.cpp
gfx/skia/src/opts/SkBitmapProcState_opts_none.cpp
gfx/skia/src/opts/SkBlitRect_opts_SSE2.cpp
gfx/skia/src/opts/SkBlitRect_opts_SSE2.h
gfx/skia/src/opts/SkBlitRow_opts_arm_neon.cpp
gfx/skia/src/opts/SkBlitRow_opts_none.cpp
gfx/skia/src/opts/SkUtils_opts_none.cpp
gfx/skia/src/opts/opts_check_SSE2.cpp
gfx/skia/src/opts/opts_check_arm.cpp
gfx/skia/src/pdf/SkPDFCatalog.cpp
gfx/skia/src/pdf/SkPDFCatalog.h
gfx/skia/src/pdf/SkPDFDevice.cpp
gfx/skia/src/pdf/SkPDFDocument.cpp
gfx/skia/src/pdf/SkPDFFont.cpp
gfx/skia/src/pdf/SkPDFFont.h
gfx/skia/src/pdf/SkPDFFontImpl.h
gfx/skia/src/pdf/SkPDFFormXObject.cpp
gfx/skia/src/pdf/SkPDFFormXObject.h
gfx/skia/src/pdf/SkPDFGraphicState.cpp
gfx/skia/src/pdf/SkPDFGraphicState.h
gfx/skia/src/pdf/SkPDFImage.cpp
gfx/skia/src/pdf/SkPDFImage.h
gfx/skia/src/pdf/SkPDFPage.cpp
gfx/skia/src/pdf/SkPDFPage.h
gfx/skia/src/pdf/SkPDFShader.cpp
gfx/skia/src/pdf/SkPDFStream.cpp
gfx/skia/src/pdf/SkPDFStream.h
gfx/skia/src/pdf/SkPDFTypes.cpp
gfx/skia/src/pdf/SkPDFTypes.h
gfx/skia/src/pdf/SkPDFUtils.cpp
gfx/skia/src/pdf/SkTSet.h
gfx/skia/src/pipe/SkGPipePriv.h
gfx/skia/src/pipe/SkGPipeRead.cpp
gfx/skia/src/pipe/SkGPipeWrite.cpp
gfx/skia/src/pipe/utils/SamplePipeControllers.cpp
gfx/skia/src/pipe/utils/SamplePipeControllers.h
gfx/skia/src/ports/FontHostConfiguration_android.cpp
gfx/skia/src/ports/FontHostConfiguration_android.h
gfx/skia/src/ports/SkDebug_android.cpp
gfx/skia/src/ports/SkDebug_nacl.cpp
gfx/skia/src/ports/SkDebug_stdio.cpp
gfx/skia/src/ports/SkDebug_win.cpp
gfx/skia/src/ports/SkFontConfigInterface_direct.cpp
gfx/skia/src/ports/SkFontDescriptor.cpp
gfx/skia/src/ports/SkFontDescriptor.h
gfx/skia/src/ports/SkFontHost_FONTPATH.cpp
gfx/skia/src/ports/SkFontHost_FreeType.cpp
gfx/skia/src/ports/SkFontHost_FreeType_common.cpp
gfx/skia/src/ports/SkFontHost_FreeType_common.h
gfx/skia/src/ports/SkFontHost_android.cpp
gfx/skia/src/ports/SkFontHost_android_old.cpp
gfx/skia/src/ports/SkFontHost_ascender.cpp
gfx/skia/src/ports/SkFontHost_fontconfig.cpp
gfx/skia/src/ports/SkFontHost_freetype_mac.cpp
gfx/skia/src/ports/SkFontHost_linux.cpp
gfx/skia/src/ports/SkFontHost_mac.cpp
gfx/skia/src/ports/SkFontHost_mac_atsui.cpp
gfx/skia/src/ports/SkFontHost_mac_coretext.cpp
gfx/skia/src/ports/SkFontHost_none.cpp
gfx/skia/src/ports/SkFontHost_sandbox_none.cpp
gfx/skia/src/ports/SkFontHost_simple.cpp
gfx/skia/src/ports/SkFontHost_tables.cpp
gfx/skia/src/ports/SkFontHost_win.cpp
gfx/skia/src/ports/SkFontHost_win_dw.cpp
gfx/skia/src/ports/SkGlobalInitialization_default.cpp
gfx/skia/src/ports/SkHarfBuzzFont.cpp
gfx/skia/src/ports/SkImageDecoder_CG.cpp
gfx/skia/src/ports/SkImageDecoder_WIC.cpp
gfx/skia/src/ports/SkImageDecoder_empty.cpp
gfx/skia/src/ports/SkImageRef_ashmem.cpp
gfx/skia/src/ports/SkImageRef_ashmem.h
gfx/skia/src/ports/SkMemory_malloc.cpp
gfx/skia/src/ports/SkMemory_mozalloc.cpp
gfx/skia/src/ports/SkOSFile_stdio.cpp
gfx/skia/src/ports/SkPurgeableMemoryBlock_android.cpp
gfx/skia/src/ports/SkPurgeableMemoryBlock_mac.cpp
gfx/skia/src/ports/SkPurgeableMemoryBlock_none.cpp
gfx/skia/src/ports/SkThread_pthread.cpp
gfx/skia/src/ports/SkThread_win.cpp
gfx/skia/src/ports/SkXMLParser_expat.cpp
gfx/skia/src/ports/SkXMLParser_tinyxml.cpp
gfx/skia/src/ports/SkXMLPullParser_expat.cpp
gfx/skia/src/sfnt/SkOTTableTypes.h
gfx/skia/src/sfnt/SkOTTable_OS_2.h
gfx/skia/src/sfnt/SkOTTable_OS_2_V0.h
gfx/skia/src/sfnt/SkOTTable_OS_2_V1.h
gfx/skia/src/sfnt/SkOTTable_OS_2_V2.h
gfx/skia/src/sfnt/SkOTTable_OS_2_V3.h
gfx/skia/src/sfnt/SkOTTable_OS_2_V4.h
gfx/skia/src/sfnt/SkOTTable_OS_2_VA.h
gfx/skia/src/sfnt/SkOTTable_glyf.h
gfx/skia/src/sfnt/SkOTTable_loca.h
gfx/skia/src/sfnt/SkOTTable_maxp.h
gfx/skia/src/sfnt/SkOTTable_maxp_CFF.h
gfx/skia/src/sfnt/SkOTTable_maxp_TT.h
gfx/skia/src/sfnt/SkOTTable_name.cpp
gfx/skia/src/sfnt/SkOTTable_name.h
gfx/skia/src/sfnt/SkOTUtils.cpp
gfx/skia/src/sfnt/SkOTUtils.h
gfx/skia/src/sfnt/SkSFNTHeader.h
gfx/skia/src/svg/SkSVGElements.cpp
gfx/skia/src/svg/SkSVGFilter.h
gfx/skia/src/svg/SkSVGGradient.cpp
gfx/skia/src/svg/SkSVGPaintState.cpp
gfx/skia/src/text/SkTextLayout.cpp
gfx/skia/src/utils/SkBase64.cpp
gfx/skia/src/utils/SkBitSet.cpp
gfx/skia/src/utils/SkBitSet.h
gfx/skia/src/utils/SkBitmapChecksummer.cpp
gfx/skia/src/utils/SkBitmapChecksummer.h
gfx/skia/src/utils/SkBitmapTransformer.cpp
gfx/skia/src/utils/SkBitmapTransformer.h
gfx/skia/src/utils/SkBoundaryPatch.cpp
gfx/skia/src/utils/SkCamera.cpp
gfx/skia/src/utils/SkCityHash.cpp
gfx/skia/src/utils/SkCityHash.h
gfx/skia/src/utils/SkCondVar.cpp
gfx/skia/src/utils/SkCountdown.cpp
gfx/skia/src/utils/SkCubicInterval.cpp
gfx/skia/src/utils/SkCullPoints.cpp
gfx/skia/src/utils/SkDebugTrace.h
gfx/skia/src/utils/SkDeferredCanvas.cpp
gfx/skia/src/utils/SkDumpCanvas.cpp
gfx/skia/src/utils/SkInterpolator.cpp
gfx/skia/src/utils/SkJSON.cpp
gfx/skia/src/utils/SkLayer.cpp
gfx/skia/src/utils/SkMD5.cpp
gfx/skia/src/utils/SkMD5.h
gfx/skia/src/utils/SkMatrix44.cpp
gfx/skia/src/utils/SkMeshUtils.cpp
gfx/skia/src/utils/SkNWayCanvas.cpp
gfx/skia/src/utils/SkOSFile.cpp
gfx/skia/src/utils/SkParseColor.cpp
gfx/skia/src/utils/SkParsePath.cpp
gfx/skia/src/utils/SkPictureUtils.cpp
gfx/skia/src/utils/SkProxyCanvas.cpp
gfx/skia/src/utils/SkRTConf.cpp
gfx/skia/src/utils/SkSHA1.cpp
gfx/skia/src/utils/SkSHA1.h
gfx/skia/src/utils/SkThreadPool.cpp
gfx/skia/src/utils/SkUnitMappers.cpp
gfx/skia/src/utils/android/ashmem.cpp
gfx/skia/src/utils/android/ashmem.h
gfx/skia/src/utils/cityhash/README
gfx/skia/src/utils/cityhash/config.h
gfx/skia/src/utils/ios/SkFontHost_iOS.mm
gfx/skia/src/utils/mac/SkBitmap_Mac.cpp
gfx/skia/src/utils/mac/SkCreateCGImageRef.cpp
gfx/skia/src/utils/mac/SkStream_mac.cpp
gfx/skia/src/utils/win/SkWGL_win.cpp
gfx/skia/src/views/SkBGViewArtist.cpp
gfx/skia/src/views/SkEvent.cpp
gfx/skia/src/views/SkParsePaint.cpp
gfx/skia/src/views/SkProgressView.cpp
gfx/skia/src/views/SkStackViewLayout.cpp
gfx/skia/src/views/SkTagList.cpp
gfx/skia/src/views/SkTextBox.cpp
gfx/skia/src/views/SkTouchGesture.cpp
gfx/skia/src/views/SkView.cpp
gfx/skia/src/views/SkViewInflate.cpp
gfx/skia/src/views/SkViewPriv.cpp
gfx/skia/src/views/SkViewPriv.h
gfx/skia/src/views/SkWidget.cpp
gfx/skia/src/views/SkWidgets.cpp
gfx/skia/src/views/SkWindow.cpp
gfx/skia/src/views/animated/SkImageView.cpp
gfx/skia/src/views/animated/SkListView.cpp
gfx/skia/src/views/animated/SkListWidget.cpp
gfx/skia/src/views/animated/SkScrollBarView.cpp
gfx/skia/src/views/animated/SkStaticTextView.cpp
gfx/skia/src/views/animated/SkWidgetViews.cpp
gfx/skia/src/views/ios/SkOSWindow_iOS.mm
gfx/skia/src/views/mac/SkNSView.h
gfx/skia/src/views/mac/SkNSView.mm
gfx/skia/src/views/mac/SkOSWindow_Mac.cpp
gfx/skia/src/views/mac/SkOSWindow_Mac.mm
gfx/skia/src/views/mac/SkOptionsTableView.mm
gfx/skia/src/views/sdl/SkOSWindow_SDL.cpp
gfx/skia/src/views/unix/SkOSWindow_Unix.cpp
gfx/skia/src/views/win/SkOSWindow_win.cpp
gfx/skia/src/views/win/skia_win.cpp
gfx/skia/src/xml/SkBML_XMLParser.cpp
gfx/skia/src/xml/SkDOM.cpp
gfx/skia/src/xml/SkJS.cpp
gfx/skia/src/xml/SkXMLPullParser.cpp
gfx/skia/src/xml/SkXMLWriter.cpp
--- a/gfx/skia/Makefile.in
+++ b/gfx/skia/Makefile.in
@@ -18,43 +18,48 @@ DEFINES += -DSK_A32_SHIFT=24 -DSK_R32_SH
 
 LOCAL_INCLUDES += \
 	-I$(srcdir)/include/core \
 	-I$(srcdir)/include/config \
 	-I$(srcdir)/include/gpu \
 	-I$(srcdir)/include/pipe \
 	-I$(srcdir)/include/ports \
 	-I$(srcdir)/include/images \
+	-I$(srcdir)/include/lazy \
 	-I$(srcdir)/include/utils \
 	-I$(srcdir)/include/utils/mac \
 	-I$(srcdir)/include/utils/win \
 	-I$(srcdir)/include/views \
 	-I$(srcdir)/include/effects \
 	-I$(srcdir)/src/core \
 	-I$(srcdir)/src/image \
 	-I$(srcdir)/src/gpu \
 	-I$(srcdir)/src/gpu/effects \
 	-I$(srcdir)/src/gpu/gl \
+	-I$(srcdir)/src/lazy \
 	-I$(srcdir)/src/utils \
+	-I$(srcdir)/src/utils/android \
 	-I$(srcdir)/src/sfnt \
 	$(NULL)
 
 VPATH += \
 	$(srcdir)/src/core \
 	$(srcdir)/src/gpu \
 	$(srcdir)/src/gpu/effects \
 	$(srcdir)/src/gpu/gl \
 	$(srcdir)/src/image \
 	$(srcdir)/src/images \
+	$(srcdir)/src/lazy \
 	$(srcdir)/src/pipe \
 	$(srcdir)/src/ports \
 	$(srcdir)/src/opts \
 	$(srcdir)/src/effects \
 	$(srcdir)/src/effects/gradients \
 	$(srcdir)/src/utils \
+	$(srcdir)/src/utils/android \
 	$(srcdir)/src/utils/mac \
 	$(srcdir)/src/sfnt \
 	$(NULL)
 
 ifeq (android,$(MOZ_WIDGET_TOOLKIT))
 OS_CXXFLAGS += $(CAIRO_FT_CFLAGS)
 endif
 
--- a/gfx/skia/README_MOZILLA
+++ b/gfx/skia/README_MOZILLA
@@ -1,5 +1,5 @@
 The source from this directory was copied from the skia subversion trunk
 using the update.sh script. The changes made were those applied by update.sh,
 the addition/update of Makefile.in files for the Mozilla build system.
 
-The subversion revision used was r5539.
+The subversion revision used was r8495.
--- a/gfx/skia/include/animator/SkAnimator.h
+++ b/gfx/skia/include/animator/SkAnimator.h
@@ -493,9 +493,8 @@ private:
     friend class SkApply;
     friend class SkDisplayMovie;
     friend class SkDisplayType;
     friend class SkPost;
     friend class SkXMLAnimatorWriter;
 };
 
 #endif
-
--- a/gfx/skia/include/animator/SkAnimatorView.h
+++ b/gfx/skia/include/animator/SkAnimatorView.h
@@ -32,9 +32,8 @@ protected:
 
 private:
     SkAnimator* fAnimator;
 
     typedef SkView INHERITED;
 };
 
 #endif
-
--- a/gfx/skia/include/config/SkUserConfig.h
+++ b/gfx/skia/include/config/SkUserConfig.h
@@ -60,22 +60,31 @@
 
     By default, these mutually exclusive flags are defined in SkPreConfig.h,
     based on the presence or absence of NDEBUG, but that decision can be changed
     here.
  */
 //#define SK_DEBUG
 //#define SK_RELEASE
 
+/*  Skia has certain debug-only code that is extremely intensive even for debug
+    builds.  This code is useful for diagnosing specific issues, but is not
+    generally applicable, therefore it must be explicitly enabled to avoid
+    the performance impact. By default these flags are undefined, but can be
+    enabled by uncommenting them below.
+ */
+//#define SK_DEBUG_GLYPH_CACHE
+//#define SK_DEBUG_PATH
+
 /*  To assist debugging, Skia provides an instance counting utility in
     include/core/SkInstCount.h. This flag turns on and off that utility to
     allow instance count tracking in either debug or release builds. By
     default it is enabled in debug but disabled in release.
  */
-//#define SK_ENABLE_INST_COUNT
+//#define SK_ENABLE_INST_COUNT 1
 
 /*  If, in debugging mode, Skia needs to stop (presumably to invoke a debugger)
     it will call SK_CRASH(). If this is not defined it, it is defined in
     SkPostConfig.h to write to an illegal address
  */
 //#define SK_CRASH() *(int *)(uintptr_t)0 = 0
 
 
@@ -135,16 +144,22 @@
  */
 //#define SK_SFNTLY_SUBSETTER "sfntly/subsetter/font_subsetter.h"
 
 /*  Define this to remove dimension checks on bitmaps. Not all blits will be
     correct yet, so this is mostly for debugging the implementation.
  */
 #define SK_ALLOW_OVER_32K_BITMAPS
 
+/**
+ *  To revert to int-only srcrect behavior in drawBitmapRect(ToRect),
+ *  define this symbol.
+ */
+//#define SK_SUPPORT_INT_SRCRECT_DRAWBITMAPRECT
+
 /*  Define this to set the upper limit for text to support LCD. Values that
     are very large increase the cost in the font cache and draw slower, without
     improving readability. If this is undefined, Skia will use its default
     value (e.g. 48)
  */
 //#define SK_MAX_SIZE_FOR_LCDTEXT     48
 
 /*  If SK_DEBUG is defined, then you can optionally define SK_SUPPORT_UNITTEST
@@ -179,25 +194,11 @@
 
 /* Determines whether to build code that supports the GPU backend. Some classes
    that are not GPU-specific, such as SkShader subclasses, have optional code
    that is used allows them to interact with the GPU backend. If you'd like to
    omit this code set SK_SUPPORT_GPU to 0. This also allows you to omit the gpu
    directories from your include search path when you're not building the GPU
    backend. Defaults to 1 (build the GPU code).
  */
-#ifdef USE_SKIA_GPU
-    #define SK_SUPPORT_GPU 1
-#else
-    #define SK_SUPPORT_GPU 0
-#endif
-
-/*  Don't dither 32bit gradients, to match what the canvas test suite expects.
- */
-#define SK_DISABLE_DITHER_32BIT_GRADIENT
-
-/*  Don't include stdint.h on windows as it conflicts with our build system.
- */
-#ifdef SK_BUILD_FOR_WIN32 
-    #define SK_IGNORE_STDINT_DOT_H 
-#endif 
+//#define SK_SUPPORT_GPU 1
 
 #endif
--- a/gfx/skia/include/core/Sk64.h
+++ b/gfx/skia/include/core/Sk64.h
@@ -223,9 +223,8 @@ struct SK_API Sk64 {
     }
 
 #ifdef SkLONGLONG
     SkLONGLONG getLongLong() const;
 #endif
 };
 
 #endif
-
--- a/gfx/skia/include/core/SkAdvancedTypefaceMetrics.h
+++ b/gfx/skia/include/core/SkAdvancedTypefaceMetrics.h
@@ -47,19 +47,17 @@ public:
     bool fMultiMaster;
     uint16_t fLastGlyphID; // The last valid glyph ID in the font.
     uint16_t fEmSize;  // The size of the em box (defines font units).
 
     // These enum values match the values used in the PDF file format.
     enum StyleFlags {
         kFixedPitch_Style  = 0x00001,
         kSerif_Style       = 0x00002,
-        kSymbolic_Style    = 0x00004,
         kScript_Style      = 0x00008,
-        kNonsymbolic_Style = 0x00020,
         kItalic_Style      = 0x00040,
         kAllCaps_Style     = 0x10000,
         kSmallCaps_Style   = 0x20000,
         kForceBold_Style   = 0x40000
     };
     uint16_t fStyle;        // Font style characteristics.
     int16_t fItalicAngle;   // Counterclockwise degrees from vertical of the
                             // dominant vertical stroke for an Italic face.
--- a/gfx/skia/include/core/SkAnnotation.h
+++ b/gfx/skia/include/core/SkAnnotation.h
@@ -9,16 +9,17 @@
 #define SkAnnotation_DEFINED
 
 #include "SkFlattenable.h"
 
 class SkData;
 class SkDataSet;
 class SkStream;
 class SkWStream;
+struct SkPoint;
 
 /**
  *  Experimental class for annotating draws. Do not use directly yet.
  *  Use helper functions at the bottom of this file for now.
  */
 class SkAnnotation : public SkFlattenable {
 public:
     enum Flags {
@@ -59,16 +60,28 @@ private:
  *  Experimental collection of predefined Keys into the Annotation dictionary
  */
 class SkAnnotationKeys {
 public:
     /**
      *  Returns the canonical key whose payload is a URL
      */
     static const char* URL_Key();
+
+    /**
+     *  Returns the canonical key whose payload is the name of a destination to
+     *  be defined.
+     */
+    static const char* Define_Named_Dest_Key();
+
+    /**
+     *  Returns the canonical key whose payload is the name of a destination to
+     *  be linked to.
+     */
+    static const char* Link_Named_Dest_Key();
 };
 
 ///////////////////////////////////////////////////////////////////////////////
 //
 // Experimental helper functions to use Annotations
 //
 
 struct SkRect;
@@ -81,9 +94,35 @@ class SkCanvas;
  *  specified rectangle (in local coordinates, just like drawRect). If the
  *  backend of this canvas does not support annotations, this call is
  *  safely ignored.
  *
  *  The caller is responsible for managing its ownership of the SkData.
  */
 SK_API void SkAnnotateRectWithURL(SkCanvas*, const SkRect&, SkData*);
 
+/**
+ *  Experimental!
+ *
+ *  Annotate the canvas by associating a name with the specified point.
+ *
+ *  If the backend of this canvas does not support annotations, this call is
+ *  safely ignored.
+ *
+ *  The caller is responsible for managing its ownership of the SkData.
+ */
+SK_API void SkAnnotateNamedDestination(SkCanvas*, const SkPoint&, SkData*);
+
+/**
+ *  Experimental!
+ *
+ *  Annotate the canvas by making the specified rectangle link to a named
+ *  destination.
+ *
+ *  If the backend of this canvas does not support annotations, this call is
+ *  safely ignored.
+ *
+ *  The caller is responsible for managing its ownership of the SkData.
+ */
+SK_API void SkAnnotateLinkToDestination(SkCanvas*, const SkRect&, SkData*);
+
+
 #endif
--- a/gfx/skia/include/core/SkBitmap.h
+++ b/gfx/skia/include/core/SkBitmap.h
@@ -16,16 +16,17 @@
 #include "SkPoint.h"
 #include "SkRefCnt.h"
 
 struct SkIRect;
 struct SkRect;
 class SkPaint;
 class SkPixelRef;
 class SkRegion;
+class SkString;
 
 // This is an opaque class, not interpreted by skia
 class SkGpuTexture;
 
 /** \class SkBitmap
 
     The SkBitmap class specifies a raster bitmap. A bitmap has an integer width
     and height, and a format (config), and a pointer to the actual pixels.
@@ -106,17 +107,17 @@ public:
     /** Return the bitmap's width, in pixels.
     */
     int width() const { return fWidth; }
     /** Return the bitmap's height, in pixels.
     */
     int height() const { return fHeight; }
     /** Return the number of bytes between subsequent rows of the bitmap.
     */
-    int rowBytes() const { return fRowBytes; }
+    size_t rowBytes() const { return fRowBytes; }
 
     /** Return the shift amount per pixel (i.e. 0 for 1-byte per pixel, 1 for
         2-bytes per pixel configs, 2 for 4-bytes per pixel configs). Return 0
         for configs that are not at least 1-byte per pixel (e.g. kA1_Config
         or kNo_Config)
     */
     int shiftPerPixel() const { return fBytesPerPixel >> 1; }
 
@@ -139,17 +140,17 @@ public:
     /** Return the byte size of the pixels, based on the height and rowBytes.
         Note this truncates the result to 32bits. Call getSize64() to detect
         if the real size exceeds 32bits.
     */
     size_t getSize() const { return fHeight * fRowBytes; }
 
     /** Return the number of bytes from the pointer returned by getPixels()
         to the end of the allocated space in the buffer. Required in
-        cases where extractBitmap has been called.
+        cases where extractSubset has been called.
     */
     size_t getSafeSize() const ;
 
     /** Return the byte size of the pixels, based on the height and rowBytes.
         This routine is slightly slower than getSize(), but does not truncate
         the answer to 32bits.
     */
     Sk64 getSize64() const {
@@ -200,17 +201,17 @@ public:
     /** Reset the bitmap to its initial state (see default constructor). If we are a (shared)
         owner of the pixels, that ownership is decremented.
     */
     void reset();
 
     /** Given a config and a width, this computes the optimal rowBytes value. This is called automatically
         if you pass 0 for rowBytes to setConfig().
     */
-    static int ComputeRowBytes(Config c, int width);
+    static size_t ComputeRowBytes(Config c, int width);
 
     /** Return the bytes-per-pixel for the specified config. If the config is
         not at least 1-byte per pixel, return 0, including for kNo_Config.
     */
     static int ComputeBytesPerPixel(Config c);
 
     /** Return the shift-per-pixel for the specified config. If the config is
      not at least 1-byte per pixel, return 0, including for kNo_Config.
@@ -218,26 +219,44 @@ public:
     static int ComputeShiftPerPixel(Config c) {
         return ComputeBytesPerPixel(c) >> 1;
     }
 
     static Sk64 ComputeSize64(Config, int width, int height);
     static size_t ComputeSize(Config, int width, int height);
 
     /**
+     *  This will brute-force return true if all of the pixels in the bitmap
+     *  are opaque. If it fails to read the pixels, or encounters an error,
+     *  it will return false.
+     *
+     *  Since this can be an expensive operation, the bitmap stores a flag for
+     *  this (isOpaque, setIsOpaque). Only call this if you need to compute this
+     *  value from "unknown" pixels.
+     */
+    static bool ComputeIsOpaque(const SkBitmap&);
+
+    /**
+     *  Calls ComputeIsOpaque, and passes its result to setIsOpaque().
+     */
+    void computeAndSetOpaquePredicate() {
+        this->setIsOpaque(ComputeIsOpaque(*this));
+    }
+
+    /**
      *  Return the bitmap's bounds [0, 0, width, height] as an SkRect
      */
     void getBounds(SkRect* bounds) const;
     void getBounds(SkIRect* bounds) const;
 
     /** Set the bitmap's config and dimensions. If rowBytes is 0, then
         ComputeRowBytes() is called to compute the optimal value. This resets
         any pixel/colortable ownership, just like reset().
     */
-    void setConfig(Config, int width, int height, int rowBytes = 0);
+    void setConfig(Config, int width, int height, size_t rowBytes = 0);
     /** Use this to assign a new pixel address for an existing bitmap. This
         will automatically release any pixelref previously installed. Only call
         this if you are handling ownership/lifetime of the pixel memory.
 
         If the bitmap retains a reference to the colortable (assuming it is
         not null) it will take care of incrementing the reference count.
 
         @param pixels   Address for the pixels, managed by the caller.
@@ -254,23 +273,22 @@ public:
         disable this optimization and ensure that pixels in the padding are not
         overwritten.
 
         Always returns false for RLE formats.
 
         @param dst      Location of destination buffer.
         @param dstSize  Size of destination buffer. Must be large enough to hold
                         pixels using indicated stride.
-        @param dstRowBytes  Width of each line in the buffer. If -1, uses
+        @param dstRowBytes  Width of each line in the buffer. If 0, uses
                             bitmap's internal stride.
         @param preserveDstPad Must we preserve padding in the dst
     */
-    bool copyPixelsTo(void* const dst, size_t dstSize, int dstRowBytes = -1,
-                      bool preserveDstPad = false)
-         const;
+    bool copyPixelsTo(void* const dst, size_t dstSize, size_t dstRowBytes = 0,
+                      bool preserveDstPad = false) const;
 
     /** Use the standard HeapAllocator to create the pixelref that manages the
         pixel memory. It will be sized based on the current width/height/config.
         If this is called multiple times, a new pixelref object will be created
         each time.
 
         If the bitmap retains a reference to the colortable (assuming it is
         not null) it will take care of incrementing the reference count.
@@ -519,16 +537,30 @@ public:
     void freeMipMap();
 
     /** Given scale factors sx, sy, determine the miplevel available in the
         bitmap, and return it (this is the amount to shift matrix iterators
         by). If dst is not null, it is set to the correct level.
     */
     int extractMipLevel(SkBitmap* dst, SkFixed sx, SkFixed sy);
 
+#ifdef SK_BUILD_FOR_ANDROID
+    bool hasHardwareMipMap() const {
+        return (fFlags & kHasHardwareMipMap_Flag) != 0;
+    }
+
+    void setHasHardwareMipMap(bool hasHardwareMipMap) {
+        if (hasHardwareMipMap) {
+            fFlags |= kHasHardwareMipMap_Flag;
+        } else {
+            fFlags &= ~kHasHardwareMipMap_Flag;
+        }
+    }
+#endif
+
     bool extractAlpha(SkBitmap* dst) const {
         return this->extractAlpha(dst, NULL, NULL, NULL);
     }
 
     bool extractAlpha(SkBitmap* dst, const SkPaint* paint,
                       SkIPoint* offset) const {
         return this->extractAlpha(dst, paint, NULL, offset);
     }
@@ -602,51 +634,60 @@ public:
             fYPtrs[y] = addr;
         }
 
     private:
         uint8_t** fYPtrs;
         int       fHeight;
     };
 
+    SkDEVCODE(void toString(SkString* str) const;)
+
 private:
     struct MipMap;
     mutable MipMap* fMipMap;
 
     mutable SkPixelRef* fPixelRef;
     mutable size_t      fPixelRefOffset;
     mutable int         fPixelLockCount;
     // either user-specified (in which case it is not treated as mutable)
     // or a cache of the returned value from fPixelRef->lockPixels()
     mutable void*       fPixels;
     mutable SkColorTable* fColorTable;    // only meaningful for kIndex8
 
     enum Flags {
         kImageIsOpaque_Flag     = 0x01,
         kImageIsVolatile_Flag   = 0x02,
-        kImageIsImmutable_Flag  = 0x04
+        kImageIsImmutable_Flag  = 0x04,
+#ifdef SK_BUILD_FOR_ANDROID
+        /* A hint for the renderer responsible for drawing this bitmap
+         * indicating that it should attempt to use mipmaps when this bitmap
+         * is drawn scaled down.
+         */
+        kHasHardwareMipMap_Flag = 0x08,
+#endif
     };
 
     uint32_t    fRowBytes;
     uint32_t    fWidth;
     uint32_t    fHeight;
     uint8_t     fConfig;
     uint8_t     fFlags;
     uint8_t     fBytesPerPixel; // based on config
 
     /* Internal computations for safe size.
     */
-    static Sk64 ComputeSafeSize64(Config config,
+    static Sk64 ComputeSafeSize64(Config   config,
                                   uint32_t width,
                                   uint32_t height,
-                                  uint32_t rowBytes);
+                                  size_t   rowBytes);
     static size_t ComputeSafeSize(Config   config,
                                   uint32_t width,
                                   uint32_t height,
-                                  uint32_t rowBytes);
+                                  size_t   rowBytes);
 
     /*  Unreference any pixelrefs or colortables
     */
     void freePixels();
     void updatePixelsFromRef() const;
 
     static SkFixed ComputeMipLevel(SkFixed sx, SkFixed dy);
 };
--- a/gfx/skia/include/core/SkBounder.h
+++ b/gfx/skia/include/core/SkBounder.h
@@ -86,9 +86,8 @@ private:
     friend class SkDrawIter;
     friend struct Draw1Glyph;
     friend class SkMaskFilter;
 
     typedef SkRefCnt INHERITED;
 };
 
 #endif
-
--- a/gfx/skia/include/core/SkCanvas.h
+++ b/gfx/skia/include/core/SkCanvas.h
@@ -20,17 +20,19 @@
 #include "SkRegion.h"
 #include "SkScalarCompare.h"
 #include "SkXfermode.h"
 
 class SkBounder;
 class SkDevice;
 class SkDraw;
 class SkDrawFilter;
+class SkMetaData;
 class SkPicture;
+class SkRRect;
 class SkSurface_Base;
 
 /** \class SkCanvas
 
     A Canvas encapsulates all of the state about drawing into a device (bitmap).
     This includes a reference to the device itself, and a stack of matrix/clip
     values. For any given draw call (e.g. drawRect), the geometry of the object
     being drawn is transformed by the concatenation of all the matrices in the
@@ -57,16 +59,18 @@ public:
 
     /** Deprecated - Construct a canvas with the specified bitmap to draw into.
         @param bitmap   Specifies a bitmap for the canvas to draw into. Its
                         structure are copied to the canvas.
     */
     explicit SkCanvas(const SkBitmap& bitmap);
     virtual ~SkCanvas();
 
+    SkMetaData& getMetaData();
+
     ///////////////////////////////////////////////////////////////////////////
 
     /**
      *  Trigger the immediate execution of all pending draw operations.
      */
     void flush();
 
     /**
@@ -77,44 +81,32 @@ public:
     SkISize getDeviceSize() const;
 
     /** Return the canvas' device object, which may be null. The device holds
         the bitmap of the pixels that the canvas draws into. The reference count
         of the returned device is not changed by this call.
     */
     SkDevice* getDevice() const;
 
-    /** Specify a device for this canvas to draw into. If it is not null, its
-        reference count is incremented. If the canvas was already holding a
-        device, its reference count is decremented. The new device is returned.
-    */
-    virtual SkDevice* setDevice(SkDevice* device);
-
     /**
      *  saveLayer() can create another device (which is later drawn onto
      *  the previous device). getTopDevice() returns the top-most device current
      *  installed. Note that this can change on other calls like save/restore,
      *  so do not access this device after subsequent canvas calls.
      *  The reference count of the device is not changed.
      *
      * @param updateMatrixClip If this is true, then before the device is
      *        returned, we ensure that its has been notified about the current
      *        matrix and clip. Note: this happens automatically when the device
      *        is drawn to, but is optional here, as there is a small perf hit
      *        sometimes.
      */
     SkDevice* getTopDevice(bool updateMatrixClip = false) const;
 
     /**
-     *  Create a new raster device and make it current. This also returns
-     *  the new device.
-     */
-    SkDevice* setBitmapDevice(const SkBitmap& bitmap);
-
-    /**
      *  Shortcut for getDevice()->createCompatibleDevice(...).
      *  If getDevice() == NULL, this method does nothing, and returns NULL.
      */
     SkDevice* createCompatibleDevice(SkBitmap::Config config,
                                     int width, int height,
                                     bool isOpaque);
 
     ///////////////////////////////////////////////////////////////////////////
@@ -343,34 +335,57 @@ public:
         @param matrix The matrix that will be copied into the current matrix.
     */
     virtual void setMatrix(const SkMatrix& matrix);
 
     /** Helper for setMatrix(identity). Sets the current matrix to identity.
     */
     void resetMatrix();
 
-    /** Modify the current clip with the specified rectangle.
-        @param rect The rect to intersect with the current clip
-        @param op The region op to apply to the current clip
-        @return true if the canvas' clip is non-empty
-    */
+    /**
+     *  Modify the current clip with the specified rectangle.
+     *  @param rect The rect to combine with the current clip
+     *  @param op The region op to apply to the current clip
+     *  @param doAntiAlias true if the clip should be antialiased
+     *  @return true if the canvas' clip is non-empty
+     */
     virtual bool clipRect(const SkRect& rect,
                           SkRegion::Op op = SkRegion::kIntersect_Op,
                           bool doAntiAlias = false);
 
-    /** Modify the current clip with the specified path.
-        @param path The path to apply to the current clip
-        @param op The region op to apply to the current clip
-        @return true if the canvas' new clip is non-empty
-    */
+    /**
+     *  Modify the current clip with the specified SkRRect.
+     *  @param rrect The rrect to combine with the current clip
+     *  @param op The region op to apply to the current clip
+     *  @param doAntiAlias true if the clip should be antialiased
+     *  @return true if the canvas' clip is non-empty
+     */
+    virtual bool clipRRect(const SkRRect& rrect,
+                           SkRegion::Op op = SkRegion::kIntersect_Op,
+                           bool doAntiAlias = false);
+
+    /**
+     *  Modify the current clip with the specified path.
+     *  @param path The path to combine with the current clip
+     *  @param op The region op to apply to the current clip
+     *  @param doAntiAlias true if the clip should be antialiased
+     *  @return true if the canvas' new clip is non-empty
+     */
     virtual bool clipPath(const SkPath& path,
                           SkRegion::Op op = SkRegion::kIntersect_Op,
                           bool doAntiAlias = false);
 
+    /** EXPERIMENTAL -- only used for testing
+        Set to false to force clips to be hard, even if doAntiAlias=true is
+        passed to clipRect or clipPath.
+     */
+    void setAllowSoftClip(bool allow) {
+        fAllowSoftClip = allow;
+    }
+
     /** Modify the current clip with the specified region. Note that unlike
         clipRect() and clipPath() which transform their arguments by the current
         matrix, clipRegion() assumes its argument is already in device
         coordinates, and so no transformation is performed.
         @param deviceRgn    The region to apply to the current clip
         @param op The region op to apply to the current clip
         @return true if the canvas' new clip is non-empty
     */
@@ -573,17 +588,26 @@ public:
     void drawRectCoords(SkScalar left, SkScalar top, SkScalar right,
                         SkScalar bottom, const SkPaint& paint);
 
     /** Draw the specified oval using the specified paint. The oval will be
         filled or framed based on the Style in the paint.
         @param oval     The rectangle bounds of the oval to be drawn
         @param paint    The paint used to draw the oval
     */
-    void drawOval(const SkRect& oval, const SkPaint&);
+    virtual void drawOval(const SkRect& oval, const SkPaint&);
+
+    /**
+     *  Draw the specified RRect using the specified paint The rrect will be filled or stroked
+     *  based on the Style in the paint.
+     *
+     *  @param rrect    The round-rect to draw
+     *  @param paint    The paint used to draw the round-rect
+     */
+    virtual void drawRRect(const SkRRect& rrect, const SkPaint& paint);
 
     /** Draw the specified circle using the specified paint. If radius is <= 0,
         then nothing will be drawn. The circle will be filled
         or framed based on the Style in the paint.
         @param cx       The x-coordinate of the center of the cirle to be drawn
         @param cy       The y-coordinate of the center of the cirle to be drawn
         @param radius   The radius of the cirle to be drawn
         @param paint    The paint used to draw the circle
@@ -639,18 +663,35 @@ public:
     /** Draw the specified bitmap, with the specified matrix applied (before the
         canvas' matrix is applied).
         @param bitmap   The bitmap to be drawn
         @param src      Optional: specify the subset of the bitmap to be drawn
         @param dst      The destination rectangle where the scaled/translated
                         image will be drawn
         @param paint    The paint used to draw the bitmap, or NULL
     */
-    virtual void drawBitmapRect(const SkBitmap& bitmap, const SkIRect* src,
-                                const SkRect& dst, const SkPaint* paint = NULL);
+    virtual void drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src,
+                                      const SkRect& dst,
+                                      const SkPaint* paint);
+
+    void drawBitmapRect(const SkBitmap& bitmap, const SkRect& dst,
+                        const SkPaint* paint) {
+        this->drawBitmapRectToRect(bitmap, NULL, dst, paint);
+    }
+
+    void drawBitmapRect(const SkBitmap& bitmap, const SkIRect* isrc,
+                        const SkRect& dst, const SkPaint* paint = NULL) {
+        SkRect realSrcStorage;
+        SkRect* realSrcPtr = NULL;
+        if (isrc) {
+            realSrcStorage.set(*isrc);
+            realSrcPtr = &realSrcStorage;
+        }
+        this->drawBitmapRectToRect(bitmap, realSrcPtr, dst, paint);
+    }
 
     virtual void drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m,
                                   const SkPaint* paint = NULL);
 
     /**
      *  Draw the bitmap stretched differentially to fit into dst.
      *  center is a rect within the bitmap, and logically divides the bitmap
      *  into 9 sections (3x3). For example, if the middle pixel of a [5x5]
@@ -757,20 +798,17 @@ public:
         */
     void drawPosTextOnPath(const void* text, size_t byteLength,
                            const SkPoint pos[], const SkPaint& paint,
                            const SkPath& path, const SkMatrix* matrix);
 #endif
 
     /** Draw the picture into this canvas. This method effective brackets the
         playback of the picture's draw calls with save/restore, so the state
-        of this canvas will be unchanged after this call. This contrasts with
-        the more immediate method SkPicture::draw(), which does not bracket
-        the canvas with save/restore, thus the canvas may be left in a changed
-        state after the call.
+        of this canvas will be unchanged after this call.
         @param picture The recorded drawing commands to playback into this
                        canvas.
     */
     virtual void drawPicture(SkPicture& picture);
 
     enum VertexMode {
         kTriangles_VertexMode,
         kTriangleStrip_VertexMode,
@@ -784,17 +822,17 @@ public:
         @param vertices Array of vertices for the mesh
         @param texs May be null. If not null, specifies the coordinate
                              in texture space for each vertex.
         @param colors May be null. If not null, specifies a color for each
                       vertex, to be interpolated across the triangle.
         @param xmode Used if both texs and colors are present. In this
                     case the colors are combined with the texture using mode,
                     before being drawn using the paint. If mode is null, then
-                    kMultiply_Mode is used.
+                    kModulate_Mode is used.
         @param indices If not null, array of indices to reference into the
                     vertex (texs, colors) array.
         @param indexCount number of entries in the indices array (if not null)
         @param paint Specifies the shader/texture if present.
     */
     virtual void drawVertices(VertexMode vmode, int vertexCount,
                               const SkPoint vertices[], const SkPoint texs[],
                               const SkColor colors[], SkXfermode* xmode,
@@ -874,18 +912,16 @@ public:
      *  clips organized by the save/restore frame in which they were
      *  added.
      *  @return the current clip stack ("list" of individual clip elements)
      */
     const SkClipStack* getClipStack() const {
         return &fClipStack;
     }
 
-    void setExternalMatrix(const SkMatrix* = NULL);
-
     class ClipVisitor {
     public:
         virtual ~ClipVisitor();
         virtual void clipRect(const SkRect&, SkRegion::Op, bool antialias) = 0;
         virtual void clipPath(const SkPath&, SkRegion::Op, bool antialias) = 0;
     };
 
     /**
@@ -950,55 +986,65 @@ protected:
     // returns false if the entire rectangle is entirely clipped out
     bool clipRectBounds(const SkRect* bounds, SaveFlags flags,
                         SkIRect* intersection);
 
     // notify our surface (if we have one) that we are about to draw, so it
     // can perform copy-on-write or invalidate any cached images
     void predrawNotify();
 
+    /** DEPRECATED -- use constructor(device)
+
+     Marked as 'protected' to avoid new clients using this before we can
+     completely remove it.
+
+     Specify a device for this canvas to draw into. If it is not null, its
+     reference count is incremented. If the canvas was already holding a
+     device, its reference count is decremented. The new device is returned.
+     */
+    virtual SkDevice* setDevice(SkDevice* device);
+
 private:
     class MCRec;
 
     SkClipStack fClipStack;
     SkDeque     fMCStack;
     // points to top of stack
     MCRec*      fMCRec;
     // the first N recs that can fit here mean we won't call malloc
     uint32_t    fMCRecStorage[32];
 
     SkBounder*  fBounder;
-    SkDevice*   fLastDeviceToGainFocus;
     int         fSaveLayerCount;    // number of successful saveLayer calls
 
+    SkMetaData* fMetaData;
+
     SkSurface_Base*  fSurfaceBase;
     SkSurface_Base* getSurfaceBase() const { return fSurfaceBase; }
     void setSurfaceBase(SkSurface_Base* sb) {
         fSurfaceBase = sb;
     }
     friend class SkSurface_Base;
 
-    void prepareForDeviceDraw(SkDevice*, const SkMatrix&, const SkRegion&);
-
     bool fDeviceCMDirty;            // cleared by updateDeviceCMCache()
     void updateDeviceCMCache();
 
     friend class SkDrawIter;    // needs setupDrawForLayerDevice()
     friend class AutoDrawLooper;
 
     SkDevice* createLayerDevice(SkBitmap::Config, int width, int height,
                                 bool isOpaque);
 
     SkDevice* init(SkDevice*);
 
     // internal methods are not virtual, so they can safely be called by other
     // canvas apis, without confusing subclasses (like SkPictureRecording)
     void internalDrawBitmap(const SkBitmap&, const SkIRect*, const SkMatrix& m,
                                   const SkPaint* paint);
-    void internalDrawBitmapRect(const SkBitmap& bitmap, const SkIRect* src,
+    void internalDrawBitmapRect(const SkBitmap& bitmap, const SkRect* src,
                                 const SkRect& dst, const SkPaint* paint);
     void internalDrawBitmapNine(const SkBitmap& bitmap, const SkIRect& center,
                                 const SkRect& dst, const SkPaint* paint);
     void internalDrawPaint(const SkPaint& paint);
     int internalSaveLayer(const SkRect* bounds, const SkPaint* paint,
                           SaveFlags, bool justForImageFilter);
     void internalDrawDevice(SkDevice*, int x, int y, const SkPaint*);
 
@@ -1011,29 +1057,27 @@ private:
                                     const char text[], size_t byteLength,
                                     SkScalar x, SkScalar y);
 
     /*  These maintain a cache of the clip bounds in local coordinates,
         (converted to 2s-compliment if floats are slow).
      */
     mutable SkRectCompareType fLocalBoundsCompareType;
     mutable bool              fLocalBoundsCompareTypeDirty;
+    bool fAllowSoftClip;
 
     const SkRectCompareType& getLocalClipBoundsCompareType() const {
         if (fLocalBoundsCompareTypeDirty) {
             this->computeLocalClipBoundsCompareType();
             fLocalBoundsCompareTypeDirty = false;
         }
         return fLocalBoundsCompareType;
     }
     void computeLocalClipBoundsCompareType() const;
 
-    SkMatrix    fExternalMatrix, fExternalInverse;
-    bool        fUseExternalMatrix;
-
     class AutoValidateClip : ::SkNoncopyable {
     public:
         explicit AutoValidateClip(SkCanvas* canvas) : fCanvas(canvas) {
             fCanvas->validateClip();
         }
         ~AutoValidateClip() { fCanvas->validateClip(); }
 
     private:
@@ -1058,17 +1102,30 @@ public:
     SkAutoCanvasRestore(SkCanvas* canvas, bool doSave) : fCanvas(canvas) {
         SkASSERT(canvas);
         fSaveCount = canvas->getSaveCount();
         if (doSave) {
             canvas->save();
         }
     }
     ~SkAutoCanvasRestore() {
-        fCanvas->restoreToCount(fSaveCount);
+        if (fCanvas) {
+            fCanvas->restoreToCount(fSaveCount);
+        }
+    }
+
+    /**
+     *  Perform the restore now, instead of waiting for the destructor. Will
+     *  only do this once.
+     */
+    void restore() {
+        if (fCanvas) {
+            fCanvas->restoreToCount(fSaveCount);
+            fCanvas = NULL;
+        }
     }
 
 private:
     SkCanvas*   fCanvas;
     int         fSaveCount;
 };
 
 #endif
--- a/gfx/skia/include/core/SkChecksum.h
+++ b/gfx/skia/include/core/SkChecksum.h
@@ -25,16 +25,21 @@ private:
     static inline uintptr_t Mash(uintptr_t total, uintptr_t value) {
         return ((total >> ROTR) | (total << ROTL)) ^ value;
     }
 
 public:
     /**
      *  Compute a 32-bit checksum for a given data block
      *
+     *  WARNING: this algorithm is tuned for efficiency, not backward/forward
+     *  compatibility.  It may change at any time, so a checksum generated with
+     *  one version of the Skia code may not match a checksum generated with
+     *  a different version of the Skia code.
+     *
      *  @param data Memory address of the data block to be processed. Must be
      *              32-bit aligned.
      *  @param size Size of the data block in bytes. Must be a multiple of 4.
      *  @return checksum result
      */
     static uint32_t Compute(const uint32_t* data, size_t size) {
         SkASSERT(SkIsAlign4(size));
 
@@ -78,9 +83,8 @@ public:
         if (8 == sizeof(result)) {
             result ^= result >> HALFBITS;
         }
         return static_cast<uint32_t>(result);
     }
 };
 
 #endif
-
--- a/gfx/skia/include/core/SkClipStack.h
+++ b/gfx/skia/include/core/SkClipStack.h
@@ -4,70 +4,306 @@
  *
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
 #ifndef SkClipStack_DEFINED
 #define SkClipStack_DEFINED
 
 #include "SkDeque.h"
+#include "SkPath.h"
+#include "SkRect.h"
 #include "SkRegion.h"
 #include "SkTDArray.h"
 
-struct SkRect;
-class SkPath;
 
 // Because a single save/restore state can have multiple clips, this class
 // stores the stack depth (fSaveCount) and clips (fDeque) separately.
 // Each clip in fDeque stores the stack state to which it belongs
 // (i.e., the fSaveCount in force when it was added). Restores are thus
 // implemented by removing clips from fDeque that have an fSaveCount larger
 // then the freshly decremented count.
 class SK_API SkClipStack {
 public:
+    enum BoundsType {
+        // The bounding box contains all the pixels that can be written to
+        kNormal_BoundsType,
+        // The bounding box contains all the pixels that cannot be written to.
+        // The real bound extends out to infinity and all the pixels outside
+        // of the bound can be written to. Note that some of the pixels inside
+        // the bound may also be writeable but all pixels that cannot be
+        // written to are guaranteed to be inside.
+        kInsideOut_BoundsType
+    };
+
+    class Element {
+    public:
+        enum Type {
+            //!< This element makes the clip empty (regardless of previous elements).
+            kEmpty_Type,
+            //!< This element combines a rect with the current clip using a set operation
+            kRect_Type,
+            //!< This element combines a path with the current clip using a set operation
+            kPath_Type,
+        };
+
+        Element() {
+            this->initCommon(0, SkRegion::kReplace_Op, false);
+            this->setEmpty();
+        }
+
+        Element(const SkRect& rect, SkRegion::Op op, bool doAA) {
+            this->initRect(0, rect, op, doAA);
+        }
+
+        Element(const SkPath& path, SkRegion::Op op, bool doAA) {
+            this->initPath(0, path, op, doAA);
+        }
+
+        bool operator== (const Element& element) const {
+            if (this == &element) {
+                return true;
+            }
+            if (fOp != element.fOp ||
+                fType != element.fType ||
+                fDoAA != element.fDoAA ||
+                fSaveCount != element.fSaveCount) {
+                return false;
+            }
+            switch (fType) {
+                case kPath_Type:
+                    return fPath == element.fPath;
+                case kRect_Type:
+                    return fRect == element.fRect;
+                case kEmpty_Type:
+                    return true;
+                default:
+                    SkDEBUGFAIL("Unexpected type.");
+                    return false;
+            }
+        }
+        bool operator!= (const Element& element) const { return !(*this == element); }
+
+        //!< Call to get the type of the clip element.
+        Type getType() const { return fType; }
+
+        //!< Call if getType() is kPath to get the path.
+        const SkPath& getPath() const { return fPath; }
+
+        //!< Call if getType() is kRect to get the rect.
+        const SkRect& getRect() const { return fRect; }
+
+        //!< Call if getType() is not kEmpty to get the set operation used to combine this element.
+        SkRegion::Op getOp() const { return fOp; }
+
+        /** If getType() is not kEmpty this indicates whether the clip shape should be anti-aliased
+            when it is rasterized. */
+        bool isAA() const { return fDoAA; }
+
+        //!< Inverts the fill of the clip shape. Note that a kEmpty element remains kEmpty.
+        void invertShapeFillType();
+
+        //!< Sets the set operation represented by the element.
+        void setOp(SkRegion::Op op) { fOp = op; }
+
+        /** The GenID can be used by clip stack clients to cache representations of the clip. The
+            ID corresponds to the set of clip elements up to and including this element within the
+            stack not to the element itself. That is the same clip path in different stacks will
+            have a different ID since the elements produce different clip result in the context of
+            their stacks. */
+        int32_t getGenID() const { return fGenID; }
+
+        /**
+         * Gets the bounds of the clip element, either the rect or path bounds. (Whether the shape
+         * is inverse filled is not considered.)
+         */
+        const SkRect& getBounds() const {
+            static const SkRect kEmpty = { 0, 0, 0, 0 };
+            switch (fType) {
+                case kRect_Type:
+                    return fRect;
+                case kPath_Type:
+                    return fPath.getBounds();
+                case kEmpty_Type:
+                    return kEmpty;
+                default:
+                    SkDEBUGFAIL("Unexpected type.");
+                    return kEmpty;
+            }
+        }
+
+        /**
+         * Conservatively checks whether the clip shape contains the rect param. (Whether the shape
+         * is inverse filled is not considered.)
+         */
+        bool contains(const SkRect& rect) const {
+            switch (fType) {
+                case kRect_Type:
+                    return fRect.contains(rect);
+                case kPath_Type:
+                    return fPath.conservativelyContainsRect(rect);
+                case kEmpty_Type:
+                    return false;
+                default:
+                    SkDEBUGFAIL("Unexpected type.");
+                    return false;
+            }
+        }
+
+        /**
+         * Is the clip shape inverse filled.
+         */
+        bool isInverseFilled() const {
+            return kPath_Type == fType && fPath.isInverseFillType();
+        }
+
+    private:
+        friend class SkClipStack;
+
+        SkPath          fPath;
+        SkRect          fRect;
+        int             fSaveCount; // save count of stack when this element was added.
+        SkRegion::Op    fOp;
+        Type            fType;
+        bool            fDoAA;
+
+        /* fFiniteBoundType and fFiniteBound are used to incrementally update the clip stack's
+           bound. When fFiniteBoundType is kNormal_BoundsType, fFiniteBound represents the
+           conservative bounding box of the pixels that aren't clipped (i.e., any pixels that can be
+           drawn to are inside the bound). When fFiniteBoundType is kInsideOut_BoundsType (which
+           occurs when a clip is inverse filled), fFiniteBound represents the conservative bounding
+           box of the pixels that _are_ clipped (i.e., any pixels that cannot be drawn to are inside
+           the bound). When fFiniteBoundType is kInsideOut_BoundsType the actual bound is the
+           infinite plane. This behavior of fFiniteBoundType and fFiniteBound is required so that we
+           can capture the cancelling out of the extensions to infinity when two inverse filled
+           clips are Booleaned together. */
+        SkClipStack::BoundsType fFiniteBoundType;
+        SkRect                  fFiniteBound;
+
+        // When element is applied to the previous elements in the stack is the result known to be
+        // equivalent to a single rect intersection? IIOW, is the clip effectively a rectangle.
+        bool                    fIsIntersectionOfRects;
+
+        int                     fGenID;
+
+        Element(int saveCount) {
+            this->initCommon(saveCount, SkRegion::kReplace_Op, false);
+            this->setEmpty();
+        }
+
+        Element(int saveCount, const SkRect& rect, SkRegion::Op op, bool doAA) {
+            this->initRect(saveCount, rect, op, doAA);
+        }
+
+        Element(int saveCount, const SkPath& path, SkRegion::Op op, bool doAA) {
+            this->initPath(saveCount, path, op, doAA);
+        }
+
+        void initCommon(int saveCount, SkRegion::Op op, bool doAA) {
+            fSaveCount = saveCount;
+            fOp = op;
+            fDoAA = doAA;
+            // A default of inside-out and empty bounds means the bounds are effectively void as it
+            // indicates that nothing is known to be outside the clip.
+            fFiniteBoundType = kInsideOut_BoundsType;
+            fFiniteBound.setEmpty();
+            fIsIntersectionOfRects = false;
+            fGenID = kInvalidGenID;
+        }
+
+        void initRect(int saveCount, const SkRect& rect, SkRegion::Op op, bool doAA) {
+            fRect = rect;
+            fType = kRect_Type;
+            this->initCommon(saveCount, op, doAA);
+        }
+
+        void initPath(int saveCount, const SkPath& path, SkRegion::Op op, bool doAA) {
+            fPath = path;
+            fType = kPath_Type;
+            this->initCommon(saveCount, op, doAA);
+        }
+
+        void setEmpty() {
+            fType = kEmpty_Type;
+            fFiniteBound.setEmpty();
+            fFiniteBoundType = kNormal_BoundsType;
+            fIsIntersectionOfRects = false;
+            fRect.setEmpty();
+            fPath.reset();
+            fGenID = kEmptyGenID;
+        }
+
+        // All Element methods below are only used within SkClipStack.cpp
+        inline void checkEmpty() const;
+        inline bool canBeIntersectedInPlace(int saveCount, SkRegion::Op op) const;
+        /* This method checks to see if two rect clips can be safely merged into one. The issue here
+          is that to be strictly correct all the edges of the resulting rect must have the same
+          anti-aliasing. */
+        bool rectRectIntersectAllowed(const SkRect& newR, bool newAA) const;
+        /** Determines possible finite bounds for the Element given the previous element of the
+            stack */
+        void updateBoundAndGenID(const Element* prior);
+        // The different combination of fill & inverse fill when combining bounding boxes
+        enum FillCombo {
+            kPrev_Cur_FillCombo,
+            kPrev_InvCur_FillCombo,
+            kInvPrev_Cur_FillCombo,
+            kInvPrev_InvCur_FillCombo
+        };
+        // per-set operation functions used by updateBoundAndGenID().
+        inline void combineBoundsDiff(FillCombo combination, const SkRect& prevFinite);
+        inline void combineBoundsXOR(int combination, const SkRect& prevFinite);
+        inline void combineBoundsUnion(int combination, const SkRect& prevFinite);
+        inline void combineBoundsIntersection(int combination, const SkRect& prevFinite);
+        inline void combineBoundsRevDiff(int combination, const SkRect& prevFinite);
+    };
+
     SkClipStack();
     SkClipStack(const SkClipStack& b);
     explicit SkClipStack(const SkRect& r);
     explicit SkClipStack(const SkIRect& r);
     ~SkClipStack();
 
     SkClipStack& operator=(const SkClipStack& b);
     bool operator==(const SkClipStack& b) const;
     bool operator!=(const SkClipStack& b) const { return !(*this == b); }
 
     void reset();
 
     int getSaveCount() const { return fSaveCount; }
     void save();
     void restore();
 
-    enum BoundsType {
-        // The bounding box contains all the pixels that can be written to
-        kNormal_BoundsType,
-        // The bounding box contains all the pixels that cannot be written to.
-        // The real bound extends out to infinity and all the pixels outside
-        // of the bound can be written to. Note that some of the pixels inside
-        // the bound may also be writeable but all pixels that cannot be
-        // written to are guaranteed to be inside.
-        kInsideOut_BoundsType
-    };
-
     /**
      * getBounds places the current finite bound in its first parameter. In its
      * second, it indicates which kind of bound is being returned. If
      * 'canvFiniteBound' is a normal bounding box then it encloses all writeable
      * pixels. If 'canvFiniteBound' is an inside out bounding box then it
      * encloses all the un-writeable pixels and the true/normal bound is the
      * infinite plane. isIntersectionOfRects is an optional parameter
      * that is true if 'canvFiniteBound' resulted from an intersection of rects.
      */
     void getBounds(SkRect* canvFiniteBound,
                    BoundsType* boundType,
                    bool* isIntersectionOfRects = NULL) const;
 
+    /**
+     * Takes an input rect in device space and conservatively clips it to the
+     * clip-stack. If false is returned then the rect does not intersect the
+     * clip and is unmodified.
+     */
+    bool intersectRectWithClip(SkRect* devRect) const;
+
+    /**
+     * Returns true if the input rect in device space is entirely contained
+     * by the clip. A return value of false does not guarantee that the rect
+     * is not contained by the clip.
+     */
+    bool quickContains(const SkRect& devRect) const;
+
     void clipDevRect(const SkIRect& ir, SkRegion::Op op) {
         SkRect r;
         r.set(ir);
         this->clipDevRect(r, op, false);
     }
     void clipDevRect(const SkRect&, SkRegion::Op, bool doAA);
     void clipDevPath(const SkPath&, SkRegion::Op, bool doAA);
     // An optimized version of clipDevRect(emptyRect, kIntersect, ...)
@@ -91,88 +327,60 @@ public:
 
     /**
      * Remove a callback added earlier via addPurgeClipCallback
      */
     void removePurgeClipCallback(PFPurgeClipCB callback, void* data) const;
 
     /**
      * The generation ID has three reserved values to indicate special
-     * (potentially ignoreable) cases
+     * (potentially ignorable) cases
      */
     static const int32_t kInvalidGenID = 0;
     static const int32_t kEmptyGenID = 1;       // no pixels writeable
     static const int32_t kWideOpenGenID = 2;    // all pixels writeable
 
     int32_t getTopmostGenID() const;
 
-private:
-    struct Rec;
-
 public:
     class Iter {
     public:
         enum IterStart {
             kBottom_IterStart = SkDeque::Iter::kFront_IterStart,
             kTop_IterStart = SkDeque::Iter::kBack_IterStart
         };
 
         /**
          * Creates an uninitialized iterator. Must be reset()
          */
         Iter();
 
         Iter(const SkClipStack& stack, IterStart startLoc);
 
-        struct Clip {
-            Clip() : fRect(NULL), fPath(NULL), fOp(SkRegion::kIntersect_Op),
-                     fDoAA(false) {}
-            friend bool operator==(const Clip& a, const Clip& b);
-            friend bool operator!=(const Clip& a, const Clip& b);
-            const SkRect*   fRect;  // if non-null, this is a rect clip
-            const SkPath*   fPath;  // if non-null, this is a path clip
-            SkRegion::Op    fOp;
-            bool            fDoAA;
-            int32_t         fGenID;
-        };
+        /**
+         *  Return the clip element for this iterator. If next()/prev() returns NULL, then the
+         *  iterator is done.
+         */
+        const Element* next();
+        const Element* prev();
 
         /**
-         *  Return the clip for this element in the iterator. If next() returns
-         *  NULL, then the iterator is done. The type of clip is determined by
-         *  the pointers fRect and fPath:
-         *
-         *  fRect==NULL  fPath!=NULL    path clip
-         *  fRect!=NULL  fPath==NULL    rect clip
-         *  fRect==NULL  fPath==NULL    empty clip
+         * Moves the iterator to the topmost element with the specified RegionOp and returns that
+         * element. If no clip element with that op is found, the first element is returned.
          */
-        const Clip* next();
-        const Clip* prev();
-
-        /**
-         * Moves the iterator to the topmost clip with the specified RegionOp
-         * and returns that clip. If no clip with that op is found,
-         * returns NULL.
-         */
-        const Clip* skipToTopmost(SkRegion::Op op);
+        const Element* skipToTopmost(SkRegion::Op op);
 
         /**
          * Restarts the iterator on a clip stack.
          */
         void reset(const SkClipStack& stack, IterStart startLoc);
 
     private:
         const SkClipStack* fStack;
-        Clip               fClip;
         SkDeque::Iter      fIter;
-
-        /**
-         * updateClip updates fClip to the current state of fIter. It unifies
-         * functionality needed by both next() and prev().
-         */
-        const Clip* updateClip(const SkClipStack::Rec* rec);
     };
 
     /**
      * The B2TIter iterates from the bottom of the stack to the top.
      * It inherits privately from Iter to prevent access to reverse iteration.
      */
     class B2TIter : private Iter {
     public:
@@ -181,17 +389,16 @@ public:
         /**
          * Wrap Iter's 2 parameter ctor to force initialization to the
          * beginning of the deque/bottom of the stack
          */
         B2TIter(const SkClipStack& stack)
         : INHERITED(stack, kBottom_IterStart) {
         }
 
-        using Iter::Clip;
         using Iter::next;
 
         /**
          * Wrap Iter::reset to force initialization to the
          * beginning of the deque/bottom of the stack
          */
         void reset(const SkClipStack& stack) {
             this->INHERITED::reset(stack, kBottom_IterStart);
@@ -241,20 +448,19 @@ private:
                                const ClipCallbackData& b) {
             return a.fCallback == b.fCallback && a.fData == b.fData;
         }
     };
 
     mutable SkTDArray<ClipCallbackData> fCallbackData;
 
     /**
-     * Invoke all the purge callbacks passing in rec's generation ID.
+     * Invoke all the purge callbacks passing in element's generation ID.
      */
-    void purgeClip(Rec* rec);
+    void purgeClip(Element* element);
 
     /**
      * Return the next unique generation ID.
      */
     static int32_t GetNextGenID();
 };
 
 #endif
-
--- a/gfx/skia/include/core/SkColor.h
+++ b/gfx/skia/include/core/SkColor.h
@@ -68,28 +68,30 @@ static inline SkColor SkColorSetARGBInli
 #define SkColorGetB(color)      (((color) >>  0) & 0xFF)
 
 static inline SkColor SkColorSetA(SkColor c, U8CPU a) {
     return (c & 0x00FFFFFF) | (a << 24);
 }
 
 // common colors
 
-#define SK_ColorBLACK   0xFF000000  //!< black SkColor value
-#define SK_ColorDKGRAY  0xFF444444  //!< dark gray SkColor value
-#define SK_ColorGRAY    0xFF888888  //!< gray SkColor value
-#define SK_ColorLTGRAY  0xFFCCCCCC  //!< light gray SkColor value
-#define SK_ColorWHITE   0xFFFFFFFF  //!< white SkColor value
+#define SK_ColorTRANSPARENT 0x00000000  //!< transparent SkColor value
 
-#define SK_ColorRED     0xFFFF0000  //!< red SkColor value
-#define SK_ColorGREEN   0xFF00FF00  //!< green SkColor value
-#define SK_ColorBLUE    0xFF0000FF  //!< blue SkColor value
-#define SK_ColorYELLOW  0xFFFFFF00  //!< yellow SkColor value
-#define SK_ColorCYAN    0xFF00FFFF  //!< cyan SkColor value
-#define SK_ColorMAGENTA 0xFFFF00FF  //!< magenta SkColor value
+#define SK_ColorBLACK       0xFF000000  //!< black SkColor value
+#define SK_ColorDKGRAY      0xFF444444  //!< dark gray SkColor value
+#define SK_ColorGRAY        0xFF888888  //!< gray SkColor value
+#define SK_ColorLTGRAY      0xFFCCCCCC  //!< light gray SkColor value
+#define SK_ColorWHITE       0xFFFFFFFF  //!< white SkColor value
+
+#define SK_ColorRED         0xFFFF0000  //!< red SkColor value
+#define SK_ColorGREEN       0xFF00FF00  //!< green SkColor value
+#define SK_ColorBLUE        0xFF0000FF  //!< blue SkColor value
+#define SK_ColorYELLOW      0xFFFFFF00  //!< yellow SkColor value
+#define SK_ColorCYAN        0xFF00FFFF  //!< cyan SkColor value
+#define SK_ColorMAGENTA     0xFFFF00FF  //!< magenta SkColor value
 
 ////////////////////////////////////////////////////////////////////////
 
 /** Convert RGB components to HSV.
         hsv[0] is Hue [0 .. 360)
         hsv[1] is Saturation [0...1]
         hsv[2] is Value [0...1]
     @param red  red component value [0..255]
@@ -157,9 +159,8 @@ SK_API SkPMColor SkPreMultiplyColor(SkCo
 typedef SkPMColor (*SkXfermodeProc)(SkPMColor src, SkPMColor dst);
 
 /** Define a function pointer type for combining a premultiplied src color
     and a 16bit device color.
 */
 typedef uint16_t (*SkXfermodeProc16)(SkPMColor src, uint16_t dst);
 
 #endif
-
--- a/gfx/skia/include/core/SkColorFilter.h
+++ b/gfx/skia/include/core/SkColorFilter.h
@@ -10,34 +10,36 @@
 #ifndef SkColorFilter_DEFINED
 #define SkColorFilter_DEFINED
 
 #include "SkColor.h"
 #include "SkFlattenable.h"
 #include "SkXfermode.h"
 
 class SkBitmap;
+class GrEffectRef;
+class GrContext;
 
 class SK_API SkColorFilter : public SkFlattenable {
 public:
     SK_DECLARE_INST_COUNT(SkColorFilter)
 
     /**
      *  If the filter can be represented by a source color plus Mode, this
      *  returns true, and sets (if not NULL) the color and mode appropriately.
      *  If not, this returns false and ignores the parameters.
      */
-    virtual bool asColorMode(SkColor* color, SkXfermode::Mode* mode);
+    virtual bool asColorMode(SkColor* color, SkXfermode::Mode* mode) const;
 
     /**
      *  If the filter can be represented by a 5x4 matrix, this
      *  returns true, and sets the matrix appropriately.
      *  If not, this returns false and ignores the parameter.
      */
-    virtual bool asColorMatrix(SkScalar matrix[20]);
+    virtual bool asColorMatrix(SkScalar matrix[20]) const;
 
     /**
      *  If the filter can be represented by per-component table, return true,
      *  and if table is not null, copy the bitmap containing the table into it.
      *
      *  The table bitmap will be in SkBitmap::kA8_Config. Each row corresponding
      *  to each component in ARGB order. e.g. row[0] == alpha, row[1] == red,
      *  etc. To transform a color, you (logically) perform the following:
@@ -45,60 +47,60 @@ public:
      *      a' = *table.getAddr8(a, 0);
      *      r' = *table.getAddr8(r, 1);
      *      g' = *table.getAddr8(g, 2);
      *      b' = *table.getAddr8(b, 3);
      *
      *  The original component value is the horizontal index for a given row,
      *  and the stored value at that index is the new value for that component.
      */
-    virtual bool asComponentTable(SkBitmap* table);
+    virtual bool asComponentTable(SkBitmap* table) const;
 
     /** Called with a scanline of colors, as if there was a shader installed.
         The implementation writes out its filtered version into result[].
         Note: shader and result may be the same buffer.
         @param src      array of colors, possibly generated by a shader
         @param count    the number of entries in the src[] and result[] arrays
         @param result   written by the filter
     */
     virtual void filterSpan(const SkPMColor src[], int count,
-                            SkPMColor result[]) = 0;
+                            SkPMColor result[]) const = 0;
     /** Called with a scanline of colors, as if there was a shader installed.
         The implementation writes out its filtered version into result[].
         Note: shader and result may be the same buffer.
         @param src      array of colors, possibly generated by a shader
         @param count    the number of entries in the src[] and result[] arrays
         @param result   written by the filter
     */
     virtual void filterSpan16(const uint16_t shader[], int count,
-                              uint16_t result[]);
+                              uint16_t result[]) const;
 
     enum Flags {
         /** If set the filter methods will not change the alpha channel of the
             colors.
         */
         kAlphaUnchanged_Flag = 0x01,
         /** If set, this subclass implements filterSpan16(). If this flag is
             set, then kAlphaUnchanged_Flag must also be set.
         */
         kHasFilter16_Flag    = 0x02
     };
 
     /** Returns the flags for this filter. Override in subclasses to return
         custom flags.
     */
-    virtual uint32_t getFlags() { return 0; }
+    virtual uint32_t getFlags() const { return 0; }
 
     /**
      *  Apply this colorfilter to the specified SkColor. This routine handles
      *  converting to SkPMColor, calling the filter, and then converting back
      *  to SkColor. This method is not virtual, but will call filterSpan()
      *   which is virtual.
      */
-    SkColor filterColor(SkColor);
+    SkColor filterColor(SkColor) const;
 
     /** Create a colorfilter that uses the specified color and mode.
         If the Mode is DST, this function will return NULL (since that
         mode will have no effect on the result).
         @param c    The source color used with the specified mode
         @param mode The xfermode mode that is applied to each color in
                         the colorfilter's filterSpan[16,32] methods
         @return colorfilter object that applies the src color and mode,
@@ -108,16 +110,21 @@ public:
 
     /** Create a colorfilter that multiplies the RGB channels by one color, and
         then adds a second color, pinning the result for each component to
         [0..255]. The alpha components of the mul and add arguments
         are ignored.
     */
     static SkColorFilter* CreateLightingFilter(SkColor mul, SkColor add);
 
+    /** A subclass may implement this factory function to work with the GPU backend. If the return
+        is non-NULL then the caller owns a ref on the returned object.
+     */
+    virtual GrEffectRef* asNewEffect(GrContext*) const;
+
     SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
 protected:
     SkColorFilter() {}
     SkColorFilter(SkFlattenableReadBuffer& rb) : INHERITED(rb) {}
 
 private:
     typedef SkFlattenable INHERITED;
 };
--- a/gfx/skia/include/core/SkColorPriv.h
+++ b/gfx/skia/include/core/SkColorPriv.h
@@ -856,9 +856,8 @@ static inline void SkBlitLCD16OpaqueRow(
 
     for (int i = 0; i < width; i++) {
         dst[i] = SkBlendLCD16Opaque(srcR, srcG, srcB, dst[i], src[i],
                                     opaqueDst);
     }
 }
 
 #endif
-
--- a/gfx/skia/include/core/SkColorShader.h
+++ b/gfx/skia/include/core/SkColorShader.h
@@ -43,16 +43,17 @@ public:
 
     // we return false for this, use asAGradient
     virtual BitmapType asABitmap(SkBitmap* outTexture,
                                  SkMatrix* outMatrix,
                                  TileMode xy[2]) const SK_OVERRIDE;
 
     virtual GradientType asAGradient(GradientInfo* info) const SK_OVERRIDE;
 
+    SK_DEVELOPER_TO_STRING()
     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkColorShader)
 
 protected:
     SkColorShader(SkFlattenableReadBuffer&);
     virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
 
 private:
 
--- a/gfx/skia/include/core/SkComposeShader.h
+++ b/gfx/skia/include/core/SkComposeShader.h
@@ -29,22 +29,22 @@ public:
         @param shaderA  The colors from this shader are seen as the "dst" by the xfermode
         @param shaderB  The colors from this shader are seen as the "src" by the xfermode
         @param mode     The xfermode that combines the colors from the two shaders. If mode
                         is null, then SRC_OVER is assumed.
     */
     SkComposeShader(SkShader* sA, SkShader* sB, SkXfermode* mode = NULL);
     virtual ~SkComposeShader();
 
-    // override
-    virtual bool setContext(const SkBitmap& device, const SkPaint& paint, const SkMatrix& matrix);
-    virtual void shadeSpan(int x, int y, SkPMColor result[], int count);
-    virtual void beginSession();
-    virtual void endSession();
+    virtual bool setContext(const SkBitmap&, const SkPaint&,
+                            const SkMatrix&) SK_OVERRIDE;
+    virtual void endContext() SK_OVERRIDE;
+    virtual void shadeSpan(int x, int y, SkPMColor[], int count) SK_OVERRIDE;
 
+    SK_DEVELOPER_TO_STRING()
     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposeShader)
 
 protected:
     SkComposeShader(SkFlattenableReadBuffer& );
     virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
 
 private: