juncai | bf183dd | 2016-05-27 16:57:24 | [diff] [blame] | 1 | // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
juncai | badc1daa | 2016-07-11 20:36:54 | [diff] [blame] | 5 | #include "chrome/browser/chooser_controller/chooser_controller.h" |
juncai | bf183dd | 2016-05-27 16:57:24 | [diff] [blame] | 6 | |
juncai | c1bb01a | 2016-09-29 22:20:19 | [diff] [blame] | 7 | #include "base/logging.h" |
juncai | a29e116d | 2016-07-13 02:53:34 | [diff] [blame] | 8 | #include "base/strings/utf_string_conversions.h" |
juncai | a29e116d | 2016-07-13 02:53:34 | [diff] [blame] | 9 | #include "components/url_formatter/elide_url.h" |
juncai | bf183dd | 2016-05-27 16:57:24 | [diff] [blame] | 10 | #include "content/public/browser/render_frame_host.h" |
juncai | a29e116d | 2016-07-13 02:53:34 | [diff] [blame] | 11 | #include "content/public/browser/web_contents.h" |
Reilly Grant | 409406c | 2018-04-05 18:03:05 | [diff] [blame] | 12 | #include "extensions/buildflags/buildflags.h" |
juncai | a29e116d | 2016-07-13 02:53:34 | [diff] [blame] | 13 | #include "ui/base/l10n/l10n_util.h" |
juncai | 474e1e1 | 2016-06-29 01:56:46 | [diff] [blame] | 14 | #include "url/origin.h" |
juncai | bf183dd | 2016-05-27 16:57:24 | [diff] [blame] | 15 | |
Reilly Grant | 409406c | 2018-04-05 18:03:05 | [diff] [blame] | 16 | #if BUILDFLAG(ENABLE_EXTENSIONS) |
| 17 | #include "extensions/browser/extension_registry.h" |
| 18 | #include "extensions/common/constants.h" |
| 19 | #endif |
| 20 | |
reillyg | f50d8d3 | 2017-03-14 22:55:00 | [diff] [blame] | 21 | namespace { |
juncai | bf183dd | 2016-05-27 16:57:24 | [diff] [blame] | 22 | |
reillyg | f50d8d3 | 2017-03-14 22:55:00 | [diff] [blame] | 23 | base::string16 CreateTitle(content::RenderFrameHost* render_frame_host, |
| 24 | int title_string_id_origin, |
| 25 | int title_string_id_extension) { |
| 26 | url::Origin origin = render_frame_host->GetLastCommittedOrigin(); |
juncai | a29e116d | 2016-07-13 02:53:34 | [diff] [blame] | 27 | |
Reilly Grant | 409406c | 2018-04-05 18:03:05 | [diff] [blame] | 28 | #if BUILDFLAG(ENABLE_EXTENSIONS) |
juncai | a29e116d | 2016-07-13 02:53:34 | [diff] [blame] | 29 | if (origin.scheme() == extensions::kExtensionScheme) { |
| 30 | content::WebContents* web_contents = |
reillyg | f50d8d3 | 2017-03-14 22:55:00 | [diff] [blame] | 31 | content::WebContents::FromRenderFrameHost(render_frame_host); |
juncai | a29e116d | 2016-07-13 02:53:34 | [diff] [blame] | 32 | content::BrowserContext* browser_context = |
| 33 | web_contents->GetBrowserContext(); |
| 34 | extensions::ExtensionRegistry* extension_registry = |
| 35 | extensions::ExtensionRegistry::Get(browser_context); |
| 36 | if (extension_registry) { |
| 37 | const extensions::Extension* extension = |
| 38 | extension_registry->enabled_extensions().GetByID(origin.host()); |
| 39 | if (extension) { |
reillyg | f50d8d3 | 2017-03-14 22:55:00 | [diff] [blame] | 40 | return l10n_util::GetStringFUTF16(title_string_id_extension, |
juncai | 6d9f773 | 2016-07-14 00:46:54 | [diff] [blame] | 41 | base::UTF8ToUTF16(extension->name())); |
juncai | a29e116d | 2016-07-13 02:53:34 | [diff] [blame] | 42 | } |
| 43 | } |
| 44 | } |
Reilly Grant | 409406c | 2018-04-05 18:03:05 | [diff] [blame] | 45 | #endif |
juncai | a29e116d | 2016-07-13 02:53:34 | [diff] [blame] | 46 | |
| 47 | return l10n_util::GetStringFUTF16( |
reillyg | f50d8d3 | 2017-03-14 22:55:00 | [diff] [blame] | 48 | title_string_id_origin, |
juncai | a29e116d | 2016-07-13 02:53:34 | [diff] [blame] | 49 | url_formatter::FormatOriginForSecurityDisplay( |
| 50 | origin, url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC)); |
juncai | bf183dd | 2016-05-27 16:57:24 | [diff] [blame] | 51 | } |
juncai | 3ecef4e | 2016-08-23 00:10:16 | [diff] [blame] | 52 | |
reillyg | f50d8d3 | 2017-03-14 22:55:00 | [diff] [blame] | 53 | } // namespace |
| 54 | |
| 55 | ChooserController::ChooserController(content::RenderFrameHost* owner, |
| 56 | int title_string_id_origin, |
| 57 | int title_string_id_extension) { |
| 58 | if (owner) { |
| 59 | title_ = |
| 60 | CreateTitle(owner, title_string_id_origin, title_string_id_extension); |
| 61 | } |
| 62 | } |
| 63 | |
| 64 | ChooserController::~ChooserController() {} |
| 65 | |
| 66 | base::string16 ChooserController::GetTitle() const { |
| 67 | return title_; |
| 68 | } |
| 69 | |
juncai | 3ecef4e | 2016-08-23 00:10:16 | [diff] [blame] | 70 | bool ChooserController::ShouldShowIconBeforeText() const { |
| 71 | return false; |
| 72 | } |
| 73 | |
Bret Sepulveda | a4975e7a5e | 2017-12-18 23:16:38 | [diff] [blame] | 74 | bool ChooserController::ShouldShowHelpButton() const { |
juncai | 4300362 | 2016-11-29 20:43:18 | [diff] [blame] | 75 | return true; |
| 76 | } |
| 77 | |
Bret Sepulveda | a4975e7a5e | 2017-12-18 23:16:38 | [diff] [blame] | 78 | bool ChooserController::ShouldShowReScanButton() const { |
| 79 | return false; |
| 80 | } |
| 81 | |
juncai | 0f6d279 | 2016-11-23 18:38:07 | [diff] [blame] | 82 | bool ChooserController::AllowMultipleSelection() const { |
| 83 | return false; |
| 84 | } |
| 85 | |
juncai | 3ecef4e | 2016-08-23 00:10:16 | [diff] [blame] | 86 | int ChooserController::GetSignalStrengthLevel(size_t index) const { |
| 87 | return -1; |
| 88 | } |
juncai | 87d0929 | 2016-09-15 04:02:53 | [diff] [blame] | 89 | |
| 90 | bool ChooserController::IsConnected(size_t index) const { |
| 91 | return false; |
| 92 | } |
| 93 | |
| 94 | bool ChooserController::IsPaired(size_t index) const { |
| 95 | return false; |
| 96 | } |
juncai | c1bb01a | 2016-09-29 22:20:19 | [diff] [blame] | 97 | |
Bret Sepulveda | e6e84f7 | 2017-10-20 03:37:40 | [diff] [blame] | 98 | void ChooserController::RefreshOptions() { |
| 99 | NOTREACHED(); |
| 100 | } |
| 101 | |
| 102 | base::string16 ChooserController::GetStatus() const { |
| 103 | return base::string16(); |
| 104 | } |
| 105 | |
juncai | c1bb01a | 2016-09-29 22:20:19 | [diff] [blame] | 106 | void ChooserController::OpenAdapterOffHelpUrl() const { |
| 107 | NOTREACHED(); |
| 108 | } |