2020-02-21 01:21:05 +01:00
|
|
|
/*++
|
|
|
|
Copyright (c) Microsoft Corporation
|
|
|
|
Licensed under the MIT license.
|
|
|
|
|
|
|
|
Module Name:
|
|
|
|
- pch.h
|
|
|
|
|
|
|
|
Abstract:
|
|
|
|
- Contains external headers to include in the precompile phase of console build process.
|
|
|
|
- Avoid including internal project headers. Instead include them only in the classes that need them (helps with test project building).
|
|
|
|
--*/
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
// Ignore checked iterators warning from VC compiler.
|
|
|
|
#define _SCL_SECURE_NO_WARNINGS
|
|
|
|
|
|
|
|
// Block minwindef.h min/max macros to prevent <algorithm> conflict
|
|
|
|
#define NOMINMAX
|
|
|
|
|
|
|
|
#define WIN32_LEAN_AND_MEAN
|
2020-12-11 20:35:23 +01:00
|
|
|
#define NOMCX
|
|
|
|
#define NOHELP
|
|
|
|
#define NOCOMM
|
2020-02-21 01:21:05 +01:00
|
|
|
#include <unknwn.h>
|
|
|
|
|
|
|
|
#define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0)
|
|
|
|
|
|
|
|
#include <windows.h>
|
|
|
|
|
|
|
|
#include "../inc/LibraryIncludes.h"
|
|
|
|
|
|
|
|
#include <wil/cppwinrt.h>
|
|
|
|
|
|
|
|
#include <winrt/Windows.system.h>
|
Switch Connections to use `ValueSet`s to initialize them (#10184)
#### ⚠️ targets #10051
## Summary of the Pull Request
This PR does one big, primary thing. It removes all the constructors from any TerminalConnections, and changes them to use an `Initialize` method that accepts a `ValueSet` of properties.
Why?
For the upcoming window/content process work, we'll need the content process to be able to initialize the connection _in the content process_. However, the window process will be the one that knows what type of connection to make. Enter `ConnectionInformation`. This class will let us specify the class name of the type we want to create, and a set of settings to use when initializing that connection.
**IMPORTANT**: As a part of this, the constructor for a connection must have 0 arguments. `RoActivateInstance` lets you just conjure a WinRT type just by class name, but that class must have a 0 arg ctor. Hence the need for `Initialize`, to actually pass the settings.
We're using a `ValueSet` here because it's basically a json blob, with more steps. In the future, when extension authors want to have custom connections, we can always deserialize the json into a `ValueSet`, pass it to their connection's `Initialize`, and let then get what they need out of it.
## References
* Tear-out: #1256
* Megathread: #5000
* Project: https://github.com/microsoft/terminal/projects/5
## PR Checklist
* [x] Closes https://github.com/microsoft/terminal/projects/5#card-50760298
* [x] I work here
* [n/a] Tests added/passed
* [n/a] Requires documentation to be updated
## Detailed Description of the Pull Request / Additional comments
`ConnectionInformation` was included as a part of this PR, to demonstrate how this will eventually be used. `ConnectionInformation` is not _currently_ used.
## Validation Steps Performed
It still builds and runs.
2021-07-20 17:02:17 +02:00
|
|
|
#include <winrt/Windows.Foundation.h>
|
2020-02-21 01:21:05 +01:00
|
|
|
#include <winrt/Windows.Foundation.Collections.h>
|
|
|
|
|
|
|
|
#include <wil/resource.h>
|
|
|
|
#include <wil/win32_helpers.h>
|