Make cloud print dialog work with cloud printer on first signin.
Better check for current URL.
Assign data only to cloud print URLs.
Don't reset data_.
BUG=236786
Review URL: https://chromiumcodereview.appspot.com/14864005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@199109 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/printing/print_dialog_cloud.cc b/chrome/browser/printing/print_dialog_cloud.cc
index 22edf13..9b2c0c9 100644
--- a/chrome/browser/printing/print_dialog_cloud.cc
+++ b/chrome/browser/printing/print_dialog_cloud.cc
@@ -221,7 +221,6 @@
base::StringPiece(reinterpret_cast<const char*>(data_->front()),
data_->size()),
&base64_data);
- data_ = NULL;
std::string header("data:");
header.append(file_type_);
header.append(";base64,");
@@ -332,14 +331,10 @@
break;
}
case content::NOTIFICATION_LOAD_STOP: {
- // Take the opportunity to set some (minimal) additional
- // script permissions required for the web UI.
GURL url = web_ui()->GetWebContents()->GetURL();
- GURL dialog_url = CloudPrintURL(
- Profile::FromWebUI(web_ui())).GetCloudPrintServiceDialogURL();
- if (url.host() == dialog_url.host() &&
- url.path() == dialog_url.path() &&
- url.scheme() == dialog_url.scheme()) {
+ if (IsCloudPrintDialogUrl(url)) {
+ // Take the opportunity to set some (minimal) additional
+ // script permissions required for the web UI.
RenderViewHost* rvh = web_ui()->GetWebContents()->GetRenderViewHost();
if (rvh) {
WebPreferences webkit_prefs = rvh->GetWebkitPreferences();
@@ -348,15 +343,14 @@
} else {
NOTREACHED();
}
+ // Choose one or the other. If you need to debug, bring up the
+ // debugger. You can then use the various chrome.send()
+ // registrations above to kick of the various function calls,
+ // including chrome.send("SendPrintData") in the javaScript
+ // console and watch things happen with:
+ // HandleShowDebugger(NULL);
+ HandleSendPrintData(NULL);
}
-
- // Choose one or the other. If you need to debug, bring up the
- // debugger. You can then use the various chrome.send()
- // registrations above to kick of the various function calls,
- // including chrome.send("SendPrintData") in the javaScript
- // console and watch things happen with:
- // HandleShowDebugger(NULL);
- HandleSendPrintData(NULL);
break;
}
}
@@ -381,7 +375,6 @@
scoped_refptr<CloudPrintDataSender> sender(
new CloudPrintDataSender(print_data_helper_.get(), print_job_title_,
print_ticket_, file_type_, data_));
- data_ = NULL;
return sender;
}
@@ -461,12 +454,7 @@
bool CloudPrintFlowHandler::NavigationToURLDidCloseDialog(const GURL& url) {
if (close_after_signin_) {
- GURL dialog_url = CloudPrintURL(
- Profile::FromWebUI(web_ui())).GetCloudPrintServiceURL();
-
- if (url.host() == dialog_url.host() &&
- StartsWithASCII(url.path(), dialog_url.path(), false) &&
- url.scheme() == dialog_url.scheme()) {
+ if (IsCloudPrintDialogUrl(url)) {
StoreDialogClientSize();
web_ui()->GetWebContents()->GetRenderViewHost()->ClosePage();
callback_.Run();
@@ -476,6 +464,14 @@
return false;
}
+bool CloudPrintFlowHandler::IsCloudPrintDialogUrl(const GURL& url) {
+ GURL cloud_print_url =
+ CloudPrintURL(Profile::FromWebUI(web_ui())).GetCloudPrintServiceURL();
+ return url.host() == cloud_print_url.host() &&
+ StartsWithASCII(url.path(), cloud_print_url.path(), false) &&
+ url.scheme() == cloud_print_url.scheme();
+}
+
CloudPrintWebDialogDelegate::CloudPrintWebDialogDelegate(
content::BrowserContext* browser_context,
gfx::NativeWindow modal_parent,