Implement the basic OS-level printing mechanics on Mac

Part two of printing implementation on the Mac. This adds a Mac implementation of PrintSettings to get page setup and printer information, basic PDF->context rendering in PrintedDocument, and most of PrintingContext to allow getting print settings (both default and interactive).

Reworks the message flow a bit when asking for print settings on the Mac, since it can only be done from the UI thread. Uses a modal dialog for now, but will later be modified further to allow for a sheet.

BUG=13158
TEST=None; no user-visible effect yet.

Review URL: http://codereview.chromium.org/268036

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28857 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/printing/printed_document.h b/printing/printed_document.h
index cedaddd9..6e20d33 100644
--- a/printing/printed_document.h
+++ b/printing/printed_document.h
@@ -7,6 +7,7 @@
 
 #include <map>
 
+#include "app/gfx/native_widget_types.h"
 #include "base/lock.h"
 #include "base/ref_counted.h"
 #include "base/scoped_ptr.h"
@@ -51,12 +52,14 @@
 
   // Draws the page in the context.
   // Note: locks for a short amount of time in debug only.
-  void RenderPrintedPage(const PrintedPage& page, HDC context) const;
+  void RenderPrintedPage(const PrintedPage& page,
+                         gfx::NativeDrawingContext context) const;
 
   // Draws the page in the context. If the page is not available right now, it
   // requests to have this page be rendered and returns false.
   // Note: locks for a short amount of time.
-  bool RenderPrintedPageNumber(int page_number, HDC context);
+  bool RenderPrintedPageNumber(int page_number,
+                               gfx::NativeDrawingContext context);
 
   // Returns true if all the necessary pages for the settings are already
   // rendered.
@@ -166,7 +169,7 @@
 
   // Prints the headers and footers for one page in the specified context
   // according to the current settings.
-  void PrintHeaderFooter(HDC context,
+  void PrintHeaderFooter(gfx::NativeDrawingContext context,
                          const PrintedPage& page,
                          PageOverlays::HorizontalPosition x,
                          PageOverlays::VerticalPosition y,