OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/chromeos/drive_internals_ui.h" | 5 #include "chrome/browser/ui/webui/chromeos/drive_internals_ui.h" |
6 | 6 |
| 7 #include "base/bind.h" |
| 8 #include "base/memory/weak_ptr.h" |
| 9 #include "chrome/browser/chromeos/gdata/gdata_auth_service.h" |
| 10 #include "chrome/browser/chromeos/gdata/gdata_documents_service.h" |
| 11 #include "chrome/browser/chromeos/gdata/gdata_system_service.h" |
7 #include "chrome/browser/profiles/profile.h" | 12 #include "chrome/browser/profiles/profile.h" |
8 #include "chrome/browser/ui/webui/chrome_web_ui_data_source.h" | 13 #include "chrome/browser/ui/webui/chrome_web_ui_data_source.h" |
9 #include "chrome/common/url_constants.h" | 14 #include "chrome/common/url_constants.h" |
10 #include "content/public/browser/web_ui.h" | 15 #include "content/public/browser/web_ui.h" |
| 16 #include "content/public/browser/web_ui_message_handler.h" |
11 #include "grit/browser_resources.h" | 17 #include "grit/browser_resources.h" |
12 | 18 |
13 namespace chromeos { | 19 namespace chromeos { |
14 | 20 |
| 21 namespace { |
| 22 |
| 23 // Class to handle messages from chrome://drive-internals. |
| 24 class DriveInternalsWebUIHandler : public content::WebUIMessageHandler { |
| 25 public: |
| 26 DriveInternalsWebUIHandler() |
| 27 : weak_ptr_factory_(this) { |
| 28 } |
| 29 |
| 30 virtual ~DriveInternalsWebUIHandler() { |
| 31 } |
| 32 |
| 33 private: |
| 34 // WebUIMessageHandler override. |
| 35 virtual void RegisterMessages() OVERRIDE { |
| 36 web_ui()->RegisterMessageCallback( |
| 37 "pageLoaded", |
| 38 base::Bind(&DriveInternalsWebUIHandler::OnPageLoaded, |
| 39 weak_ptr_factory_.GetWeakPtr())); |
| 40 } |
| 41 |
| 42 // Called when the page is first loaded. |
| 43 void OnPageLoaded(const base::ListValue* args) { |
| 44 Profile* profile = Profile::FromWebUI(web_ui()); |
| 45 gdata::GDataSystemService* system_service = |
| 46 gdata::GDataSystemServiceFactory::GetForProfile(profile); |
| 47 // |system_service| may be NULL in the guest/incognito mode. |
| 48 if (!system_service) |
| 49 return; |
| 50 |
| 51 gdata::DocumentsServiceInterface* documents_service = |
| 52 system_service->docs_service(); |
| 53 DCHECK(documents_service); |
| 54 |
| 55 // Update the auth status section. |
| 56 base::DictionaryValue auth_status; |
| 57 auth_status.SetBoolean("has-refresh-token", |
| 58 documents_service->HasRefreshToken()); |
| 59 auth_status.SetBoolean("has-access-token", |
| 60 documents_service->HasAccessToken()); |
| 61 web_ui()->CallJavascriptFunction("UpdateAuthStatus", auth_status); |
| 62 } |
| 63 |
| 64 base::WeakPtrFactory<DriveInternalsWebUIHandler> weak_ptr_factory_; |
| 65 DISALLOW_COPY_AND_ASSIGN(DriveInternalsWebUIHandler); |
| 66 }; |
| 67 |
| 68 } // namespace |
| 69 |
15 DriveInternalsUI::DriveInternalsUI(content::WebUI* web_ui) | 70 DriveInternalsUI::DriveInternalsUI(content::WebUI* web_ui) |
16 : WebUIController(web_ui) { | 71 : WebUIController(web_ui) { |
| 72 web_ui->AddMessageHandler(new DriveInternalsWebUIHandler()); |
| 73 |
17 ChromeWebUIDataSource* source = | 74 ChromeWebUIDataSource* source = |
18 new ChromeWebUIDataSource(chrome::kChromeUIDriveInternalsHost); | 75 new ChromeWebUIDataSource(chrome::kChromeUIDriveInternalsHost); |
19 source->add_resource_path("drive_internals.js", IDR_DRIVE_INTERNALS_JS); | 76 source->add_resource_path("drive_internals.js", IDR_DRIVE_INTERNALS_JS); |
20 source->set_default_resource(IDR_DRIVE_INTERNALS_HTML); | 77 source->set_default_resource(IDR_DRIVE_INTERNALS_HTML); |
21 | 78 |
22 Profile* profile = Profile::FromWebUI(web_ui); | 79 Profile* profile = Profile::FromWebUI(web_ui); |
23 ChromeURLDataManager::AddDataSource(profile, source); | 80 ChromeURLDataManager::AddDataSource(profile, source); |
24 } | 81 } |
25 | 82 |
26 } // namespace chromeos | 83 } // namespace chromeos |
OLD | NEW |