Commit 5a991af4 authored by Bailey Berro's avatar Bailey Berro Committed by Commit Bot

Create free form Add SMB Share dialog

- Creates a free form SMB share dialog
- Dialog will be opened by SmbProvider::RequestMount

Bug: chromium:887135
Change-Id: I379417ac15d633bce704bd50c8d31e8488fc2975
Reviewed-on: https://chromium-review.googlesource.com/c/1289409
Commit-Queue: Bailey Berro <baileyberro@chromium.org>
Reviewed-by: default avatarKyle Horimoto <khorimoto@chromium.org>
Reviewed-by: default avatarSteven Bennetts <stevenjb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#607008}
parent 0756ad8c
......@@ -653,6 +653,9 @@
<include name="IDR_MEDIA_ENGAGEMENT_MOJO_JS" file="${root_gen_dir}\chrome\browser\media\media_engagement_score_details.mojom.js" use_base_dir="false" type="BINDATA" compress="gzip" />
<include name="IDR_PWA_HTML" file="resources\pwa.html" type="BINDATA" />
<if expr="chromeos">
<include name="IDR_SMB_SHARES_DIALOG_CONTAINER_HTML" file="resources\chromeos\smb_shares\smb_share_dialog_container.html" flattenhtml="true" allowexternalscript="true" type="chrome_html" />
<include name="IDR_SMB_SHARES_DIALOG_HTML" file="resources\chromeos\smb_shares\smb_share_dialog.html" flattenhtml="true" allowexternalscript="true" type="chrome_html" />
<include name="IDR_SMB_SHARES_DIALOG_JS" file="resources\chromeos\smb_shares\smb_share_dialog.js" type="chrome_html" />
<include name="IDR_SYS_INTERNALS_HTML" file="resources\chromeos\sys_internals\index.html" type="BINDATA" />
<include name="IDR_SYS_INTERNALS_CSS" file="resources\chromeos\sys_internals\index.css" type="BINDATA" />
<include name="IDR_SYS_INTERNALS_JS" file="resources\chromeos\sys_internals\index.js" type="BINDATA" />
......
......@@ -31,6 +31,7 @@ group("closure_compile") {
"multidevice_setup:closure_compile",
"network_ui:closure_compile",
"select_to_speak:closure_compile",
"smb_shares:closure_compile",
"switch_access:closure_compile",
"sys_internals:closure_compile",
]
......
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//third_party/closure_compiler/compile_js.gni")
js_type_check("closure_compile") {
deps = [
":smb_share_dialog",
]
}
js_library("smb_share_dialog") {
deps = [
"//ui/webui/resources/cr_components/chromeos/smb_shares:add_smb_share_dialog",
"//ui/webui/resources/js:cr",
"//ui/webui/resources/js:i18n_behavior",
]
}
khorimoto@chromium.org
\ No newline at end of file
<link rel="import" href="chrome://resources/html/polymer.html">
<link rel="import" href="chrome://resources/cr_components/chromeos/smb_shares/add_smb_share_dialog.html">
<link rel="import" href="chrome://resources/html/load_time_data.html">
<link rel="import" href="chrome://resources/html/i18n_behavior.html">
<dom-module id="smb-share-dialog">
<template>
<style>
add-smb-share-dialog {
--cr-dialog-native: {
border-radius: 0;
height: 100%;
width: 100%;
}
}
</style>
<add-smb-share-dialog on-close="onDialogClose_">
</add-smb-share-dialog>
</template>
<script src="smb_share_dialog.js"></script>
</dom-module>
\ No newline at end of file
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @fileoverview
* 'smb-share-dialog' is used to host a <add-smb-share-dialog> element to
* add SMB file shares.
*/
Polymer({
is: 'smb-share-dialog',
behaviors: [I18nBehavior],
/** @override */
attached: function() {
this.$.addShareDialog.open();
},
/** @private */
onDialogClose_: function() {
chrome.send('dialogClose');
},
});
\ No newline at end of file
<!doctype html>
<html dir="$i18n{textdirection}" lang="$i18n{language}">
<head>
<meta charset="utf-8">
<link rel="import" href="chrome://resources/html/polymer.html">
<link rel="import" href="chrome://resources/html/load_time_data.html">
<link rel="import" href="chrome://resources/html/i18n_behavior.html">
<link rel="import" href="smb_share_dialog.html">
<link rel="stylesheet" href="chrome://resources/css/text_defaults_md.css">
<script src="strings.js"></script>
</head>
<body>
<smb-share-dialog id="main-element"></smb-share-dialog>
</body>
</html>
\ No newline at end of file
......@@ -1648,6 +1648,8 @@ jumbo_split_static_library("ui") {
"webui/chromeos/slow_ui.h",
"webui/chromeos/smb_shares/smb_handler.cc",
"webui/chromeos/smb_shares/smb_handler.h",
"webui/chromeos/smb_shares/smb_share_dialog.cc",
"webui/chromeos/smb_shares/smb_share_dialog.h",
"webui/chromeos/smb_shares/smb_shares_localized_strings_provider.cc",
"webui/chromeos/smb_shares/smb_shares_localized_strings_provider.h",
"webui/chromeos/sys_internals/sys_internals_message_handler.cc",
......
......@@ -155,6 +155,7 @@
#include "chrome/browser/ui/webui/chromeos/set_time_ui.h"
#include "chrome/browser/ui/webui/chromeos/slow_trace_ui.h"
#include "chrome/browser/ui/webui/chromeos/slow_ui.h"
#include "chrome/browser/ui/webui/chromeos/smb_shares/smb_share_dialog.h"
#include "chrome/browser/ui/webui/chromeos/sys_internals/sys_internals_ui.h"
#include "chrome/browser/ui/webui/signin/inline_login_ui.h"
#include "chromeos/chromeos_features.h"
......@@ -495,6 +496,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
return &NewWebUI<chromeos::SlowUI>;
if (url.host_piece() == chrome::kChromeUISlowTraceHost)
return &NewWebUI<chromeos::SlowTraceController>;
if (url.host_piece() == chrome::kChromeUISmbShareHost)
return &NewWebUI<chromeos::smb_dialog::SmbShareDialogUI>;
if (url.host_piece() == chrome::kChromeUISysInternalsHost &&
SysInternalsUI::IsEnabled())
return &NewWebUI<SysInternalsUI>;
......
// Copyright (c) 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/webui/chromeos/smb_shares/smb_share_dialog.h"
#include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/webui/chromeos/smb_shares/smb_handler.h"
#include "chrome/browser/ui/webui/chromeos/smb_shares/smb_shares_localized_strings_provider.h"
#include "chrome/common/webui_url_constants.h"
#include "chrome/grit/browser_resources.h"
#include "chrome/grit/generated_resources.h"
#include "components/strings/grit/components_strings.h"
#include "content/public/browser/web_ui.h"
#include "content/public/browser/web_ui_data_source.h"
namespace chromeos {
namespace smb_dialog {
namespace {
constexpr int kSmbShareDialogHeight = 442;
void AddSmbSharesStrings(content::WebUIDataSource* html_source) {
// Add strings specific to smb_dialog.
smb_dialog::AddLocalizedStrings(html_source);
// Add additional strings that are not specific to smb_dialog.
static const struct {
const char* name;
int id;
} localized_strings[] = {
{"addSmbShare", IDS_SETTINGS_DOWNLOADS_SMB_SHARES_ADD_SHARE},
{"add", IDS_ADD},
{"cancel", IDS_CANCEL},
};
for (const auto& entry : localized_strings) {
html_source->AddLocalizedString(entry.name, entry.id);
}
}
} // namespace
// static
void SmbShareDialog::Show() {
SmbShareDialog* dialog = new SmbShareDialog();
dialog->ShowSystemDialog();
}
SmbShareDialog::SmbShareDialog()
: SystemWebDialogDelegate(GURL(chrome::kChromeUISmbShareURL),
base::string16() /* title */) {}
SmbShareDialog::~SmbShareDialog() = default;
void SmbShareDialog::GetDialogSize(gfx::Size* size) const {
size->SetSize(SystemWebDialogDelegate::kDialogWidth, kSmbShareDialogHeight);
}
SmbShareDialogUI::SmbShareDialogUI(content::WebUI* web_ui)
: ui::WebDialogUI(web_ui) {
content::WebUIDataSource* source =
content::WebUIDataSource::Create(chrome::kChromeUISmbShareHost);
AddSmbSharesStrings(source);
const user_manager::User* user =
chromeos::ProfileHelper::Get()->GetUserByProfile(
Profile::FromWebUI(web_ui));
source->AddBoolean("isActiveDirectoryUser",
user && user->IsActiveDirectoryUser());
source->SetJsonPath("strings.js");
source->SetDefaultResource(IDR_SMB_SHARES_DIALOG_CONTAINER_HTML);
source->AddResourcePath("smb_share_dialog.html", IDR_SMB_SHARES_DIALOG_HTML);
source->AddResourcePath("smb_share_dialog.js", IDR_SMB_SHARES_DIALOG_JS);
web_ui->AddMessageHandler(
std::make_unique<SmbHandler>(Profile::FromWebUI(web_ui)));
content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), source);
}
SmbShareDialogUI::~SmbShareDialogUI() = default;
} // namespace smb_dialog
} // namespace chromeos
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_SMB_SHARES_SMB_SHARE_DIALOG_H_
#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_SMB_SHARES_SMB_SHARE_DIALOG_H_
#include "base/macros.h"
#include "chrome/browser/ui/webui/chromeos/system_web_dialog_delegate.h"
#include "ui/web_dialogs/web_dialog_ui.h"
namespace chromeos {
namespace smb_dialog {
class SmbShareDialog : public SystemWebDialogDelegate {
public:
// Shows the dialog.
static void Show();
protected:
SmbShareDialog();
~SmbShareDialog() override;
// ui::WebDialogDelegate
void GetDialogSize(gfx::Size* size) const override;
DISALLOW_COPY_AND_ASSIGN(SmbShareDialog);
};
class SmbShareDialogUI : public ui::WebDialogUI {
public:
explicit SmbShareDialogUI(content::WebUI* web_ui);
~SmbShareDialogUI() override;
DISALLOW_COPY_AND_ASSIGN(SmbShareDialogUI);
};
} // namespace smb_dialog
} // namespace chromeos
#endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_SMB_SHARES_SMB_SHARE_DIALOG_H_
......@@ -226,6 +226,8 @@ const char kChromeUISetTimeURL[] = "chrome://set-time/";
const char kChromeUISlowHost[] = "slow";
const char kChromeUISlowTraceHost[] = "slow_trace";
const char kChromeUISlowURL[] = "chrome://slow/";
const char kChromeUISmbShareHost[] = "smb-share-dialog";
const char kChromeUISmbShareURL[] = "chrome://smb-share-dialog/";
const char kChromeUISysInternalsHost[] = "sys-internals";
const char kChromeUIUserImageHost[] = "userimage";
const char kChromeUIUserImageURL[] = "chrome://userimage/";
......
......@@ -221,6 +221,8 @@ extern const char kChromeUISetTimeURL[];
extern const char kChromeUISlowHost[];
extern const char kChromeUISlowTraceHost[];
extern const char kChromeUISlowURL[];
extern const char kChromeUISmbShareHost[];
extern const char kChromeUISmbShareURL[];
extern const char kChromeUISysInternalsHost[];
extern const char kChromeUIUserImageHost[];
extern const char kChromeUIUserImageURL[];
......
......@@ -21,6 +21,7 @@ js_library("smb_browser_proxy") {
js_library("add_smb_share_dialog") {
deps = [
"//ui/webui/resources/cr_components/chromeos/smb_shares:smb_browser_proxy",
"//ui/webui/resources/cr_elements/cr_input:cr_input",
"//ui/webui/resources/js:cr",
"//ui/webui/resources/js:i18n_behavior",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment