| Index: chrome/renderer/print_web_view_helper_linux.cc
 | 
| diff --git a/chrome/renderer/print_web_view_helper_linux.cc b/chrome/renderer/print_web_view_helper_linux.cc
 | 
| index 6910086c1faecada3d36b464619a833e2ac21969..4061174732a4797e9eacd0c371a7059b4d36706e 100644
 | 
| --- a/chrome/renderer/print_web_view_helper_linux.cc
 | 
| +++ b/chrome/renderer/print_web_view_helper_linux.cc
 | 
| @@ -14,6 +14,7 @@
 | 
|  #include "printing/metafile_impl.h"
 | 
|  #include "printing/metafile_skia_wrapper.h"
 | 
|  #include "skia/ext/vector_canvas.h"
 | 
| +#include "skia/ext/vector_platform_device_skia.h"
 | 
|  #include "third_party/skia/include/core/SkRefCnt.h"
 | 
|  #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
 | 
|  #include "ui/gfx/point.h"
 | 
| @@ -34,7 +35,8 @@ void PrintWebViewHelper::RenderPreviewPage(int page_number) {
 | 
|    PrintPageInternal(page_params,
 | 
|                      print_preview_context_.GetPrintCanvasSize(),
 | 
|                      print_preview_context_.frame(),
 | 
| -                    print_preview_context_.metafile());
 | 
| +                    print_preview_context_.metafile(),
 | 
| +                    true);
 | 
|    print_preview_context_.RenderedPreviewPage(
 | 
|        base::TimeTicks::Now() - begin_time);
 | 
|    PreviewPageRendered(page_number);
 | 
| @@ -148,12 +150,12 @@ bool PrintWebViewHelper::RenderPages(const PrintMsg_PrintPages_Params& params,
 | 
|    if (params.pages.empty()) {
 | 
|      for (int i = 0; i < *page_count; ++i) {
 | 
|        page_params.page_number = i;
 | 
| -      PrintPageInternal(page_params, canvas_size, frame, metafile);
 | 
| +      PrintPageInternal(page_params, canvas_size, frame, metafile, false);
 | 
|      }
 | 
|    } else {
 | 
|      for (size_t i = 0; i < params.pages.size(); ++i) {
 | 
|        page_params.page_number = params.pages[i];
 | 
| -      PrintPageInternal(page_params, canvas_size, frame, metafile);
 | 
| +      PrintPageInternal(page_params, canvas_size, frame, metafile, false);
 | 
|      }
 | 
|    }
 | 
|  
 | 
| @@ -168,7 +170,8 @@ void PrintWebViewHelper::PrintPageInternal(
 | 
|      const PrintMsg_PrintPage_Params& params,
 | 
|      const gfx::Size& canvas_size,
 | 
|      WebFrame* frame,
 | 
| -    printing::Metafile* metafile) {
 | 
| +    printing::Metafile* metafile,
 | 
| +    bool is_preview) {
 | 
|    PageSizeMargins page_layout_in_points;
 | 
|    GetPageSizeAndMarginsInPoints(frame, params.page_number, params.params,
 | 
|                                  &page_layout_in_points);
 | 
| @@ -197,7 +200,14 @@ void PrintWebViewHelper::PrintPageInternal(
 | 
|    printing::MetafileSkiaWrapper::SetMetafileOnCanvas(canvas.get(), metafile);
 | 
|    frame->printPage(params.page_number, canvas.get());
 | 
|  
 | 
| -  // TODO(myhuang): We should render the header and the footer.
 | 
| +  if (is_preview && params.params.display_header_footer) {
 | 
| +    // |page_number| is 0-based, so 1 is added.
 | 
| +    // The scale factor on Linux is 1.
 | 
| +    PrintHeaderAndFooter(static_cast<skia::VectorPlatformDeviceSkia*>(device),
 | 
| +                         *canvas, params.page_number + 1,
 | 
| +                         print_preview_context_.total_page_count(), 1,
 | 
| +                         page_layout_in_points, header_footer_info_);
 | 
| +  }
 | 
|  
 | 
|    // Done printing. Close the device context to retrieve the compiled metafile.
 | 
|    if (!metafile->FinishPage())
 | 
| 
 |