| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.h" | 5 #include "chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 #if defined(ENABLE_FULL_PRINTING) && !defined(OS_CHROMEOS) && \ | 49 #if defined(ENABLE_FULL_PRINTING) && !defined(OS_CHROMEOS) && \ |
| 50 !defined(OS_MACOSX) | 50 !defined(OS_MACOSX) |
| 51 #define CLOUD_PRINT_CONNECTOR_UI_AVAILABLE | 51 #define CLOUD_PRINT_CONNECTOR_UI_AVAILABLE |
| 52 #endif | 52 #endif |
| 53 | 53 |
| 54 namespace local_discovery { | 54 namespace local_discovery { |
| 55 | 55 |
| 56 namespace { | 56 namespace { |
| 57 const char kPrivetAutomatedClaimURLFormat[] = "%s/confirm?token=%s"; | 57 const char kPrivetAutomatedClaimURLFormat[] = "%s/confirm?token=%s"; |
| 58 | 58 |
| 59 const int kInitialRequeryTimeSeconds = 1; | |
| 60 const int kMaxRequeryTimeSeconds = 2; // Time for last requery | |
| 61 | |
| 62 int g_num_visible = 0; | 59 int g_num_visible = 0; |
| 63 | |
| 64 } // namespace | 60 } // namespace |
| 65 | 61 |
| 66 LocalDiscoveryUIHandler::LocalDiscoveryUIHandler() : is_visible_(false) { | 62 LocalDiscoveryUIHandler::LocalDiscoveryUIHandler() : is_visible_(false) { |
| 67 #if defined(CLOUD_PRINT_CONNECTOR_UI_AVAILABLE) | 63 #if defined(CLOUD_PRINT_CONNECTOR_UI_AVAILABLE) |
| 68 #if !defined(GOOGLE_CHROME_BUILD) && defined(OS_WIN) | 64 #if !defined(GOOGLE_CHROME_BUILD) && defined(OS_WIN) |
| 69 // On Windows, we need the PDF plugin which is only guaranteed to exist on | 65 // On Windows, we need the PDF plugin which is only guaranteed to exist on |
| 70 // Google Chrome builds. Use a command-line switch for Windows non-Google | 66 // Google Chrome builds. Use a command-line switch for Windows non-Google |
| 71 // Chrome builds. | 67 // Chrome builds. |
| 72 cloud_print_connector_ui_enabled_ = | 68 cloud_print_connector_ui_enabled_ = |
| 73 CommandLine::ForCurrentProcess()->HasSwitch( | 69 CommandLine::ForCurrentProcess()->HasSwitch( |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 if (!privet_lister_) { | 132 if (!privet_lister_) { |
| 137 service_discovery_client_ = ServiceDiscoverySharedClient::GetInstance(); | 133 service_discovery_client_ = ServiceDiscoverySharedClient::GetInstance(); |
| 138 privet_lister_.reset(new PrivetDeviceListerImpl( | 134 privet_lister_.reset(new PrivetDeviceListerImpl( |
| 139 service_discovery_client_.get(), this)); | 135 service_discovery_client_.get(), this)); |
| 140 privet_http_factory_ = | 136 privet_http_factory_ = |
| 141 PrivetHTTPAsynchronousFactory::CreateInstance( | 137 PrivetHTTPAsynchronousFactory::CreateInstance( |
| 142 service_discovery_client_.get(), profile->GetRequestContext()); | 138 service_discovery_client_.get(), profile->GetRequestContext()); |
| 143 } | 139 } |
| 144 | 140 |
| 145 privet_lister_->Start(); | 141 privet_lister_->Start(); |
| 146 SendQuery(kInitialRequeryTimeSeconds); | 142 privet_lister_->DiscoverNewDevices(false); |
| 147 | 143 |
| 148 #if defined(CLOUD_PRINT_CONNECTOR_UI_AVAILABLE) | 144 #if defined(CLOUD_PRINT_CONNECTOR_UI_AVAILABLE) |
| 149 StartCloudPrintConnector(); | 145 StartCloudPrintConnector(); |
| 150 #endif | 146 #endif |
| 151 | 147 |
| 152 CheckUserLoggedIn(); | 148 CheckUserLoggedIn(); |
| 153 | 149 |
| 154 notification_registrar_.RemoveAll(); | 150 notification_registrar_.RemoveAll(); |
| 155 notification_registrar_.Add(this, | 151 notification_registrar_.Add(this, |
| 156 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, | 152 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 376 device_descriptions_.erase(name); | 372 device_descriptions_.erase(name); |
| 377 scoped_ptr<base::Value> null_value(base::Value::CreateNullValue()); | 373 scoped_ptr<base::Value> null_value(base::Value::CreateNullValue()); |
| 378 base::StringValue name_value(name); | 374 base::StringValue name_value(name); |
| 379 | 375 |
| 380 web_ui()->CallJavascriptFunction("local_discovery.onUnregisteredDeviceUpdate", | 376 web_ui()->CallJavascriptFunction("local_discovery.onUnregisteredDeviceUpdate", |
| 381 name_value, *null_value); | 377 name_value, *null_value); |
| 382 } | 378 } |
| 383 | 379 |
| 384 void LocalDiscoveryUIHandler::DeviceCacheFlushed() { | 380 void LocalDiscoveryUIHandler::DeviceCacheFlushed() { |
| 385 web_ui()->CallJavascriptFunction("local_discovery.onDeviceCacheFlushed"); | 381 web_ui()->CallJavascriptFunction("local_discovery.onDeviceCacheFlushed"); |
| 386 SendQuery(kInitialRequeryTimeSeconds); | 382 privet_lister_->DiscoverNewDevices(false); |
| 387 } | 383 } |
| 388 | 384 |
| 389 void LocalDiscoveryUIHandler::OnCloudPrintPrinterListReady() { | 385 void LocalDiscoveryUIHandler::OnCloudPrintPrinterListReady() { |
| 390 base::ListValue printer_object_list; | 386 base::ListValue printer_object_list; |
| 391 std::set<std::string> local_ids; | 387 std::set<std::string> local_ids; |
| 392 | 388 |
| 393 for (DeviceDescriptionMap::iterator i = device_descriptions_.begin(); | 389 for (DeviceDescriptionMap::iterator i = device_descriptions_.begin(); |
| 394 i != device_descriptions_.end(); | 390 i != device_descriptions_.end(); |
| 395 i++) { | 391 i++) { |
| 396 std::string device_id = i->second.id; | 392 std::string device_id = i->second.id; |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 | 495 |
| 500 return return_value.Pass(); | 496 return return_value.Pass(); |
| 501 } | 497 } |
| 502 | 498 |
| 503 void LocalDiscoveryUIHandler::CheckUserLoggedIn() { | 499 void LocalDiscoveryUIHandler::CheckUserLoggedIn() { |
| 504 base::FundamentalValue logged_in_value(!GetSyncAccount().empty()); | 500 base::FundamentalValue logged_in_value(!GetSyncAccount().empty()); |
| 505 web_ui()->CallJavascriptFunction("local_discovery.setUserLoggedIn", | 501 web_ui()->CallJavascriptFunction("local_discovery.setUserLoggedIn", |
| 506 logged_in_value); | 502 logged_in_value); |
| 507 } | 503 } |
| 508 | 504 |
| 509 void LocalDiscoveryUIHandler::ScheduleQuery(int timeout_seconds) { | |
| 510 if (timeout_seconds <= kMaxRequeryTimeSeconds) { | |
| 511 requery_callback_.Reset(base::Bind(&LocalDiscoveryUIHandler::SendQuery, | |
| 512 base::Unretained(this), | |
| 513 timeout_seconds * 2)); | |
| 514 | |
| 515 base::MessageLoop::current()->PostDelayedTask( | |
| 516 FROM_HERE, | |
| 517 requery_callback_.callback(), | |
| 518 base::TimeDelta::FromSeconds(timeout_seconds)); | |
| 519 } | |
| 520 } | |
| 521 | |
| 522 void LocalDiscoveryUIHandler::SendQuery(int next_timeout_seconds) { | |
| 523 privet_lister_->DiscoverNewDevices(false); | |
| 524 ScheduleQuery(next_timeout_seconds); | |
| 525 } | |
| 526 | |
| 527 #if defined(CLOUD_PRINT_CONNECTOR_UI_AVAILABLE) | 505 #if defined(CLOUD_PRINT_CONNECTOR_UI_AVAILABLE) |
| 528 void LocalDiscoveryUIHandler::StartCloudPrintConnector() { | 506 void LocalDiscoveryUIHandler::StartCloudPrintConnector() { |
| 529 Profile* profile = Profile::FromWebUI(web_ui()); | 507 Profile* profile = Profile::FromWebUI(web_ui()); |
| 530 | 508 |
| 531 base::Closure cloud_print_callback = base::Bind( | 509 base::Closure cloud_print_callback = base::Bind( |
| 532 &LocalDiscoveryUIHandler::OnCloudPrintPrefsChanged, | 510 &LocalDiscoveryUIHandler::OnCloudPrintPrefsChanged, |
| 533 base::Unretained(this)); | 511 base::Unretained(this)); |
| 534 | 512 |
| 535 if (cloud_print_connector_email_.GetPrefName().empty()) { | 513 if (cloud_print_connector_email_.GetPrefName().empty()) { |
| 536 cloud_print_connector_email_.Init( | 514 cloud_print_connector_email_.Init( |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 622 } | 600 } |
| 623 | 601 |
| 624 void LocalDiscoveryUIHandler::RefreshCloudPrintStatusFromService() { | 602 void LocalDiscoveryUIHandler::RefreshCloudPrintStatusFromService() { |
| 625 if (cloud_print_connector_ui_enabled_) | 603 if (cloud_print_connector_ui_enabled_) |
| 626 CloudPrintProxyServiceFactory::GetForProfile(Profile::FromWebUI(web_ui()))-> | 604 CloudPrintProxyServiceFactory::GetForProfile(Profile::FromWebUI(web_ui()))-> |
| 627 RefreshStatusFromService(); | 605 RefreshStatusFromService(); |
| 628 } | 606 } |
| 629 #endif // cloud print connector option stuff | 607 #endif // cloud print connector option stuff |
| 630 | 608 |
| 631 } // namespace local_discovery | 609 } // namespace local_discovery |
| OLD | NEW |