diff options
author | mhm@chromium.org <mhm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-14 01:51:32 +0000 |
---|---|---|
committer | mhm@chromium.org <mhm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-14 01:51:32 +0000 |
commit | d53d849311746e2443b633b46ea20f13e4fc4481 (patch) | |
tree | 3c63c7b61f335556da0d0d141079e2c59dd43484 /chrome/browser/dom_ui/print_ui.cc | |
parent | 3ad70eb6fdb20cf77d09d29e8c0e848e80cdd3ad (diff) | |
download | chromium_src-d53d849311746e2443b633b46ea20f13e4fc4481.zip chromium_src-d53d849311746e2443b633b46ea20f13e4fc4481.tar.gz chromium_src-d53d849311746e2443b633b46ea20f13e4fc4481.tar.bz2 |
Hookup Print HTML page to the DOM UI for Print Preview and Settings
Depends on initial foundation:
http://src.chromium.org/viewvc/chrome?view=rev&revision=19906
And html mockup:
http://src.chromium.org/viewvc/chrome?view=rev&revision=19918
BUG=173, 947
TEST=The user will see the print html page as a html test webpage.
Review URL: http://codereview.chromium.org/155067
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20595 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/dom_ui/print_ui.cc')
-rw-r--r-- | chrome/browser/dom_ui/print_ui.cc | 53 |
1 files changed, 52 insertions, 1 deletions
diff --git a/chrome/browser/dom_ui/print_ui.cc b/chrome/browser/dom_ui/print_ui.cc index 973e5c7..82b2396 100644 --- a/chrome/browser/dom_ui/print_ui.cc +++ b/chrome/browser/dom_ui/print_ui.cc @@ -4,6 +4,18 @@ #include "chrome/browser/dom_ui/print_ui.h" +#include "app/l10n_util.h" +#include "app/resource_bundle.h" +#include "base/message_loop.h" +#include "base/thread.h" +#include "base/values.h" +#include "chrome/browser/browser_process.h" +#include "chrome/common/jstemplate_builder.h" +#include "chrome/common/url_constants.h" + +#include "grit/browser_resources.h" +#include "grit/generated_resources.h" + /////////////////////////////////////////////////////////////////////////////// // // PrintUI @@ -11,5 +23,44 @@ /////////////////////////////////////////////////////////////////////////////// PrintUI::PrintUI(TabContents* contents) : DOMUI(contents) { - NOTIMPLEMENTED(); + PrintUIHTMLSource* html_source = new PrintUIHTMLSource(); + + // Set up the print:url source. + g_browser_process->io_thread()->message_loop()->PostTask(FROM_HERE, + NewRunnableMethod(&chrome_url_data_manager, + &ChromeURLDataManager::AddDataSource, + html_source)); +} + +//////////////////////////////////////////////////////////////////////////////// +// +// PrintUIHTMLSource +// +//////////////////////////////////////////////////////////////////////////////// + +PrintUIHTMLSource::PrintUIHTMLSource() + : DataSource(chrome::kPrintScheme, MessageLoop::current()) { +} + +void PrintUIHTMLSource::StartDataRequest(const std::string& path, + int request_id) { + // Setup a dictionary so that the html page could read the values. + DictionaryValue localized_strings; + localized_strings.SetString(L"title", + l10n_util::GetString(IDS_PRINT)); + + SetFontAndTextDirection(&localized_strings); + + // Setup the print html page. + static const StringPiece print_html( + ResourceBundle::GetSharedInstance().GetRawDataResource( + IDR_PRINT_TAB_HTML)); + const std::string full_html = jstemplate_builder::GetTemplateHtml( + print_html, &localized_strings, "t"); + + // Load the print html page into the tab contents. + scoped_refptr<RefCountedBytes> html_bytes(new RefCountedBytes); + html_bytes->data.resize(full_html.size()); + std::copy(full_html.begin(), full_html.end(), html_bytes->data.begin()); + SendResponse(request_id, html_bytes); } |