summaryrefslogtreecommitdiffstats
path: root/chromium/docs/website/site/developers/design-documents/mac-plugins/index.md
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/docs/website/site/developers/design-documents/mac-plugins/index.md')
-rw-r--r--chromium/docs/website/site/developers/design-documents/mac-plugins/index.md140
1 files changed, 0 insertions, 140 deletions
diff --git a/chromium/docs/website/site/developers/design-documents/mac-plugins/index.md b/chromium/docs/website/site/developers/design-documents/mac-plugins/index.md
deleted file mode 100644
index cdb71dad489..00000000000
--- a/chromium/docs/website/site/developers/design-documents/mac-plugins/index.md
+++ /dev/null
@@ -1,140 +0,0 @@
----
-breadcrumbs:
-- - /developers
- - For Developers
-- - /developers/design-documents
- - Design Documents
-page_name: mac-plugins
-title: Mac Plugins
----
-
-## Overview
-
-This document provides an overview of the Mac-specific aspects of implementation
-of Chromium’s plugin hosting. Except where noted, Chromium for Mac uses the same
-[overall architecture](/developers/design-documents/plugin-architecture) as
-Windows and Linux.
-
-## Platform API Handling
-
-Much of the complexity of the Mac plugin host implementation is in the drawing
-and event handling discussed below. There are a few specific areas common to all
-of them, relating to certain platform APIs that would not work correctly without
-special handling. Use of platform APIs in plugin is discouraged due to this, but
-some are very common and have no supported NPAPI equivalent, so must be
-supported.
-
-### Plugin-Created Windows
-
-Because plugins are in their own process, the window layer and activation for
-windows created by plugins is not correct. To work around this, Chromium uses
-DYLD_INSERT_LIBRARIES to hook Carbon window creation and activation calls, and
-swizzling to hook Cocoa window creation and activation calls. Chromium attempts
-to manage the process activation to match the window activation, so that plugin
-windows show on top of browser windows.
-
-#### Full-Screen Windows
-
-Full-screen windows are detected as a special case of plugin-opened windows, and
-cause the browser to request or relinquish full screen mode as appropriate,
-since this must be done from the foreground process.
-
-#### Limitations
-
-* Complex plugin and browser window layering, in the case where a
- plugin creates multiple windows, may not be correct. In practice,
- this doesn’t appear to be a problem.
-* Modal windows don’t currently prevent interaction with background
- windows, only bringing background windows forward.
-* There may be specific calls not caught by the current
- interposing/swizzling.
-
-### Cursors
-
-As with full-screen mode, cursors must be managed from the foreground process.
-As a result, several Cocoa cursor calls are hooked, and the cursor information
-handed off to another process.
-
-#### Limitations
-
-* Not all cursor operations are currently handled.
-
-## Drawing and Event Handling
-
-## There are two event models and four drawing models on the Mac, and Chromium supports all but the oldest of each. The specific details of each implementation are explained below.
-
-### Carbon Events
-
-This event model is no longer support
-
-### Cocoa Events
-
-The Cocoa event model doesn’t provide a window reference to the plugin, so the
-out-of-process implementation is mostly straightforward. However, there are two
-wrinkles:
-
-#### IME Support
-
-Cocoa event model IME has extremely specific semantics, which did not mesh
-cleanly with WebKit’s IME at the time the code was written. As a result, plugin
-IME is handled explicitly in the browser process, with messages sent back and
-forth through the renderer process. In the future, it might be possible to move
-that support into Blink itself.
-
-#### NPN_ConvertPoint
-
-NPN_ConvertPoint requires that browsers be able to map plugin coordinates to
-screen and window coordinates, so the plugin host is forced to track the
-location of the browser window. This function is poorly spec’d, however, and
-it’s unclear how it should behave in the presence of CSS transforms, so the
-implementation may need to move to one where the query is passed into the
-renderer and/or browser process, and answered there, instead of window location
-being tracked by the plugin process.
-
-### QuickDraw
-
-This drawing model is no longer supported.
-
-### CoreGraphics
-
-CoreGraphics support is straightforward: plugins are provided a graphics port
-pointing to the shared buffer. Since plugins are only allowed to draw during a
-draw event in this model, tearing is not an issue.
-Unlike Windows, where the page background must be provided to the plugin in
-order to allow the plugin to composite, CoreGraphics-based drawing preserves
-transparency data. As a result, transparent plugins on the Mac do not have the
-same double-buffer and synchronous drawing requirements that they do on Windows.
-
-### Core Animation
-
-Since the purpose of the Core Animation model is to provide hardware accelerated
-drawing, the normal plugin drawing system is bypassed (as with windowed plugins
-on other platforms). Instead, an IOSurface is shared between the plugin and gpu
-processes, and the plugin’s CALayer is drawn into that surface using CARenderer.
-On the gpu side, the contents of the IOSurface are composited into the page
-using a hardware-accelerated drawing mechanism.
-Because the IOSurface approach requires explicit action on the browser side when
-drawing is necessary, but CARenderer doesn’t provide a way to know when drawing
-is necessary, drawing is driven by a high-frequency timer on the plugin side. As
-a result, the invalidating Core Animation model described below was developed as
-an alternative. Use of the original Core Animation model in Chromium is
-discouraged.
-
-#### Limitations
-
-* The timer adds a small amount of CPU overhead.
-
-### Invalidating Core Animation
-
-The invalidating Core Animation model is identical to the Core Animation model,
-except that the plugin informs the plugin host when drawing is necessary; as a
-result, the timer is not needed.
-
-### Future Plans
-
-#### 64-Bit
-
-A number of plugins on the Mac are still 32-bit only; because Safari and Firefox
-both support 32-bit plugins out of process in 64-bit mode, there has not been
-strong incentive for plugin vendors to release 64-bit plugins. Because of this,
-any 64-bit Mac Chromium release will likely need to support 32-bit plugins. \ No newline at end of file