From dd4bee69b7d55620f7dc9db8c36b478bd4959755 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 12 Mar 2020 21:09:45 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .gitlab/CODEOWNERS | 27 +++++---- .../components/popover.vue | 17 ++++++ .../blob/suggest_gitlab_ci_yml/index.js | 1 + .../ide/components/preview/clientside.vue | 23 +++++--- app/assets/javascripts/ide/index.js | 1 + app/assets/javascripts/ide/stores/state.js | 1 + .../time_tracking/sidebar_time_tracking.vue | 4 +- .../sidebar/lib/sidebar_move_issue.js | 4 +- .../concerns/clientside_preview_csp.rb | 17 ++++++ app/controllers/ide_controller.rb | 1 + app/helpers/blob_helper.rb | 4 ++ app/helpers/ide_helper.rb | 5 +- .../application_setting_implementation.rb | 6 ++ app/models/wiki_page.rb | 2 +- app/views/projects/blob/_editor.html.haml | 3 +- app/views/projects/blob/new.html.haml | 3 +- ...6-smartcard_support_different_hostname.yml | 5 ++ .../207623-fix-code-search-pagination.yml | 5 ++ ...9761-fix-wiki-directories-with-hyphens.yml | 5 ++ .../27144-gitlab-hosted-codesandbox.yml | 5 ++ config/gitlab.yml.example | 4 +- config/initializers/1_settings.rb | 1 + package.json | 4 +- scripts/lint-doc.sh | 29 +++++++--- scripts/security-harness | 6 +- .../ide/clientside_preview_csp_spec.rb | 35 ++++++++++++ ...static_object_external_storage_csp_spec.rb | 2 +- .../features/projects/sourcegraph_csp_spec.rb | 2 +- .../components/popover_spec.js | 36 +++++++++++- .../ide/components/preview/clientside_spec.js | 55 +++++++++++++++++-- spec/models/wiki_page_spec.rb | 50 ++++++++++------- spec/support/shared_examples/csp.rb | 32 +++++------ yarn.lock | 18 +++--- 33 files changed, 318 insertions(+), 95 deletions(-) create mode 100644 app/controllers/concerns/clientside_preview_csp.rb create mode 100644 changelogs/unreleased/10526-smartcard_support_different_hostname.yml create mode 100644 changelogs/unreleased/207623-fix-code-search-pagination.yml create mode 100644 changelogs/unreleased/209761-fix-wiki-directories-with-hyphens.yml create mode 100644 changelogs/unreleased/27144-gitlab-hosted-codesandbox.yml create mode 100644 spec/features/ide/clientside_preview_csp_spec.rb diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index fa87b981f5d..21a376c4885 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -10,17 +10,24 @@ *.md @gl-docsteam # Frontend maintainers should see everything in `app/assets/` -app/assets/ @gitlab-org/maintainers/frontend *.scss @annabeldunstone @gitlab-org/maintainers/frontend -/scripts/frontend/ @gitlab-org/maintainers/frontend +*.js @gitlab-org/maintainers/frontend +/app/assets/ @gitlab-org/maintainers/frontend +/ee/app/assets/ @gitlab-org/maintainers/frontend +/spec/javascripts/ @gitlab-org/maintainers/frontend +/ee/spec/javascripts/ @gitlab-org/maintainers/frontend +/spec/frontend/ @gitlab-org/maintainers/frontend +/ee/spec/frontend/ @gitlab-org/maintainers/frontend # Database maintainers should review changes in `db/` -db/ @gitlab-org/maintainers/database -lib/gitlab/background_migration/ @gitlab-org/maintainers/database -lib/gitlab/database/ @gitlab-org/maintainers/database -lib/gitlab/sql/ @gitlab-org/maintainers/database -lib/gitlab/github_import/ @gitlab-org/maintainers/database +/db/ @gitlab-org/maintainers/database /ee/db/ @gitlab-org/maintainers/database +/lib/gitlab/background_migration/ @gitlab-org/maintainers/database +/ee/lib/ee/gitlab/background_migration/ @gitlab-org/maintainers/database +/lib/gitlab/database/ @gitlab-org/maintainers/database +/ee/lib/gitlab/database/ @gitlab-org/maintainers/database +/lib/gitlab/sql/ @gitlab-org/maintainers/database +/lib/gitlab/github_import/ @gitlab-org/maintainers/database /app/finders/ @gitlab-org/maintainers/database /ee/app/finders/ @gitlab-org/maintainers/database @@ -40,14 +47,14 @@ lib/gitlab/github_import/ @gitlab-org/maintainers/database # Engineering Productivity owned files /.gitlab-ci.yml @gl-quality/eng-prod /.gitlab/ci/ @gl-quality/eng-prod +/.gitlab/ci/docs.gitlab-ci.yml @gl-quality/eng-prod @gl-docsteam +/.gitlab/ci/releases.gitlab-ci.yml @gl-quality/eng-prod @gitlab-org/delivery /.gitlab/CODEOWNERS @gl-quality/eng-prod Dangerfile @gl-quality/eng-prod /danger/ @gl-quality/eng-prod /lib/gitlab/danger/ @gl-quality/eng-prod /scripts/ @gl-quality/eng-prod - -# Delivery owner files -/.gitlab/ci/releases.gitlab-ci.yml @gitlab-org/delivery +/scripts/frontend/ @gl-quality/eng-prod @gitlab-org/maintainers/frontend # Telemetry owner files /ee/lib/gitlab/usage_data_counters/ @gitlab-org/growth/telemetry diff --git a/app/assets/javascripts/blob/suggest_gitlab_ci_yml/components/popover.vue b/app/assets/javascripts/blob/suggest_gitlab_ci_yml/components/popover.vue index d304ae7dbf6..7f0c232eea8 100644 --- a/app/assets/javascripts/blob/suggest_gitlab_ci_yml/components/popover.vue +++ b/app/assets/javascripts/blob/suggest_gitlab_ci_yml/components/popover.vue @@ -4,6 +4,9 @@ import Cookies from 'js-cookie'; import { parseBoolean, scrollToElement } from '~/lib/utils/common_utils'; import { s__ } from '~/locale'; import { glEmojiTag } from '~/emoji'; +import Tracking from '~/tracking'; + +const trackingMixin = Tracking.mixin(); const popoverStates = { suggest_gitlab_ci_yml: { @@ -27,6 +30,7 @@ export default { GlIcon, GlButton, }, + mixins: [trackingMixin], props: { target: { type: String, @@ -40,10 +44,18 @@ export default { type: String, required: true, }, + humanAccess: { + type: String, + required: true, + }, }, data() { return { popoverDismissed: parseBoolean(Cookies.get(this.dismissKey)), + tracking: { + label: this.trackLabel, + property: this.humanAccess, + }, }; }, computed: { @@ -60,12 +72,17 @@ export default { mounted() { if (this.trackLabel === 'suggest_commit_first_project_gitlab_ci_yml' && !this.popoverDismissed) scrollToElement(document.querySelector(this.target)); + + this.trackOnShow(); }, methods: { onDismiss() { this.popoverDismissed = true; Cookies.set(this.dismissKey, this.popoverDismissed, { expires: 365 }); }, + trackOnShow() { + if (!this.popoverDismissed) this.track(); + }, }, }; diff --git a/app/assets/javascripts/blob/suggest_gitlab_ci_yml/index.js b/app/assets/javascripts/blob/suggest_gitlab_ci_yml/index.js index 2cc342fb381..3b67b3dd259 100644 --- a/app/assets/javascripts/blob/suggest_gitlab_ci_yml/index.js +++ b/app/assets/javascripts/blob/suggest_gitlab_ci_yml/index.js @@ -10,6 +10,7 @@ export default el => target: el.dataset.target, trackLabel: el.dataset.trackLabel, dismissKey: el.dataset.dismissKey, + humanAccess: el.dataset.humanAccess, }, }); }, diff --git a/app/assets/javascripts/ide/components/preview/clientside.vue b/app/assets/javascripts/ide/components/preview/clientside.vue index beb179d0411..aa8d932da6e 100644 --- a/app/assets/javascripts/ide/components/preview/clientside.vue +++ b/app/assets/javascripts/ide/components/preview/clientside.vue @@ -21,7 +21,7 @@ export default { }; }, computed: { - ...mapState(['entries', 'promotionSvgPath', 'links']), + ...mapState(['entries', 'promotionSvgPath', 'links', 'codesandboxBundlerUrl']), ...mapGetters(['packageJson', 'currentProject']), normalizedEntries() { return Object.keys(this.entries).reduce((acc, path) => { @@ -106,12 +106,7 @@ export default { return this.loadFileContent(this.mainEntry) .then(() => this.$nextTick()) .then(() => { - this.initManager('#ide-preview', this.sandboxOpts, { - fileResolver: { - isFile: p => Promise.resolve(Boolean(this.entries[createPathWithExt(p)])), - readFile: p => this.loadFileContent(createPathWithExt(p)).then(content => content), - }, - }); + this.initManager(); this.listener = listen(e => { switch (e.type) { @@ -139,8 +134,18 @@ export default { this.manager.updatePreview(this.sandboxOpts); }, 250); }, - initManager(el, opts, resolver) { - this.manager = new Manager(el, opts, resolver); + initManager() { + const { codesandboxBundlerUrl: bundlerURL } = this; + + const settings = { + fileResolver: { + isFile: p => Promise.resolve(Boolean(this.entries[createPathWithExt(p)])), + readFile: p => this.loadFileContent(createPathWithExt(p)).then(content => content), + }, + ...(bundlerURL ? { bundlerURL } : {}), + }; + + this.manager = new Manager('#ide-preview', this.sandboxOpts, settings); }, }, }; diff --git a/app/assets/javascripts/ide/index.js b/app/assets/javascripts/ide/index.js index a3450522697..9e9d9df8f82 100644 --- a/app/assets/javascripts/ide/index.js +++ b/app/assets/javascripts/ide/index.js @@ -53,6 +53,7 @@ export function initIde(el, options = {}) { clientsidePreviewEnabled: parseBoolean(el.dataset.clientsidePreviewEnabled), renderWhitespaceInCode: parseBoolean(el.dataset.renderWhitespaceInCode), editorTheme: window.gon?.user_color_scheme || DEFAULT_THEME, + codesandboxBundlerUrl: el.dataset.codesandboxBundlerUrl, }); }, methods: { diff --git a/app/assets/javascripts/ide/stores/state.js b/app/assets/javascripts/ide/stores/state.js index a714562c5b2..0fd6a448283 100644 --- a/app/assets/javascripts/ide/stores/state.js +++ b/app/assets/javascripts/ide/stores/state.js @@ -34,4 +34,5 @@ export default () => ({ clientsidePreviewEnabled: false, renderWhitespaceInCode: false, editorTheme: DEFAULT_THEME, + codesandboxBundlerUrl: null, }); diff --git a/app/assets/javascripts/sidebar/components/time_tracking/sidebar_time_tracking.vue b/app/assets/javascripts/sidebar/components/time_tracking/sidebar_time_tracking.vue index 018b30d2a67..05ad7b4ea3e 100644 --- a/app/assets/javascripts/sidebar/components/time_tracking/sidebar_time_tracking.vue +++ b/app/assets/javascripts/sidebar/components/time_tracking/sidebar_time_tracking.vue @@ -1,6 +1,6 @@