Граф коммитов

103 Коммитов

Автор SHA1 Сообщение Дата
Jim Wilcox 871208da73 Tried to make WebViewControlNavigationCompletedEventArgs report a better status, but no real way to be sure of IsSuccess. 2018-09-07 15:54:45 -04:00
Jim Wilcox 7ea0730310 Several fixes for PR 2453 2018-09-07 11:25:36 -04:00
Jim Wilcox 4482b8631f Keyword adjustments for Controls projects. 2018-09-07 10:21:10 -04:00
Jim Wilcox 2bbca8f9b0 fixes keywords on the controls projects. 2018-09-07 10:06:32 -04:00
Richard Murillo c45cd2faca Separate Web View from other controls (#2455)
* Separate Web View from other controls

Controls project now requires XamlHost, which requires SDK OS 17692; however, web view only requires 17134

* Remove NuGet refernces for System.Net.Http and System.Runtime.WindowsRuntime
2018-09-07 08:51:35 -04:00
Richard Murillo 113876a4b3 Remove NuGet refernces for System.Net.Http and System.Runtime.WindowsRuntime 2018-09-06 18:08:01 -07:00
Richard Murillo 3884c38ccf Merge branch 'jimwilcox/xamlislands-wrappers-squished' into rjmurillo/xamlislands-separate_webview 2018-09-06 17:55:12 -07:00
Richard Murillo 678369d09f Separate Web View from other controls
Controls project now requires XamlHost, which requires SDK OS 17692; however, web view only requires 17134
2018-09-06 17:54:24 -07:00
Richard Murillo 6b02fdb1bb PR Feedback (#2454)
* Correct WebViewCompatible disposal

- Ensure code analysis didn't trigger in implementation
- IDisposable members also need dtor

* Enable GenerateAssemblyInfo

* Convert System.Runtime.WindowsRuntime package to local reference

* Correct sample namespace
2018-09-06 17:33:54 -04:00
Jim Wilcox (The Granite State Hacker) a19d8dc01a Add Xaml Islands Xaml Wrappers Preview (#2432)
* Folded the latest work into the CTK.  This includes wrappers for MediaPlayerElement, InkCanvas, and InkToolbar.  There's also a new Samples app called TestSample (for the time being).  In order to accomplish this, the projects in the Win32 sln needed to be updated to .NET 4.7.2 and SDK 17686.

* Added WPF MapControl wrapper.

* Initial WPF wraps for SwapChainPanel & WebView.

* refactors setter implementation for consistency.  Fixes some missing event handlers in WebView (Lite).

* Minimally working demos of InkToolbar with InkToolBarCustomToolButton as a wrapped child control.  Not quite happy with this implementation, but wanted to bounce it off the team.

* Sets the appropriate type on the Wrapper attached property

* 95% code-generated wrappers (minor post-process touchups only)

* Fixes the binding issue on MediaPlayer property for one-way binding.

* Refactored events to use a dynamic wrapper for event args.

* Updates events to pattern that works, requiring event args wrappers. (thus adding 25 event args wrappers) and an additional control wrapper.

* WIP:  Refactoring WebView for fallback behavior.

* Committing this so I can test another branch.

* Restoring samples for Ink, Mediaplayer, et al.

* Checkpointing

* InkPresenter's pretty well fleshed out.

* Fixes compile issue.

* Pulled back on winmd ref changes.

* Map control is in the sample project now, and doesn't die, but doesn't show a map yet, either.

* looking into binding issues with the map control, but not convinced that's the issue.

* Added SwapChainPanel to sample

* Fixes references so that Debug & Release both build

* Attempts to apply dpi fixes to test sample project.  Also fixes implementation selection condition for WebViewCompatible.

* Updates required after merge.

* Removed SwapChainPanel, MapControl, and hopefully extraneous InkPresenter code.

* Revert "Removed SwapChainPanel, MapControl, and hopefully extraneous InkPresenter code."

This reverts commit 5f977c3fddad1d5bb2d72b367157892982e9c033.

* Ran UpdateHeaders.bat

* Experimentation with full control set.

* Restored to .NET 4.6.2

* Removed SecurityCriticalAttribute from class, not needed.

* Fixed a naming issue that surfaced in review.

* Got rid of the ".Compatible" namespace for the WebViewCompatible control.

* renamed Microsoft.Windows.Interop to Microsoft.Toolkit.Win32.UI.Interop. Convertet project to enable pack

* Regenerated wrappers including basic redirect pointers for documentation.  Included a few more wrappers and enums to simplify and reduce need for WinMD.

* split up Microsoft.Toolkit.Win32.UI.Controls in WPF and WinForms binaries sharing common code

* Fix references

- Add missing project references
- Use Windows.winmd set by Directory.Build
- Convert GAC references to NuGet packages

* updated headers

* Worked in the latest WindowsXamlHost / WindowsXamlHostBase (with a local extension to enable needed functionality).

* More properly integrates Interop.WPF code, extending WindowsXamlHostBase to sort out differences.

* Fixing some sample project breakages in an earlier brancrh to prove out the branch.

* Splitting WindowsXamlHost off to WPF & WinForms.  This is the WPF path.

* Pulls in Interop.WinForms.

* Moves wpf shared code in by link.

* Set IsFullscreenButtonVisibile = false in MediaPlayerElement since it's not supported.

* Moved the sample app to a more appropriate namespace / assembly name in prep for importing WinForms sample.  Also hammered out WebViewCompatible.

* Getting the WinForms Sample app in.

* Ran UpdateHeaders.bat

* Updated to use latest SDK (17713) via Directory.Build.props file.

* Making sure the samples uses Directory.Build.props target platform version.

* Got the WebViewCompatible partially operable.

* Almost there, checkpointing for a pull from rimuri/xaml-islands_more-fixes.

* StyleCop fixes for Microsoft.Toolkit.Win32.UI.Interop.WinForms

Some fixes still required for documentation and usage in some cases.

* StyleCop fixes for Microsoft.Toolkit.Win32.UI.Interop.WPF

* Optimize references

* Fixing a comment in directory.build.props.

* Fix commas in WindowsXamlHostBase.cs

* Fix StyleCop issues with DependencyObjectCollection.cs

* designer tweak

* fixes binding on the source property.

* Updated initialization of WebView in WebViewCompatibilityAdapter.

* Working out stylecop errors.

* Refactored to get rid of Windows dependency creeping out of WindowsXamlHostBase.

* fixed up release build configuration

* reverted tpm for all projects

* Set docking state before EndInit

Asynchronous initialization occurs after calling EndInit. To prevent multiple paints when the control is resized during initialization, move the dock style prior to EndInit to ensure the target HWND RECT.

* Correct order of members

* Implement IDisposable

WebView is disposable. Making WebViewCompatibilityAdapter disposable and dispose of WebView

* DRY out WinRT type detection

WebViewCompatible duplicated WinMD metadata detection

* Correct order of members

* Correct issues with merge

* Add missing file headers

* Remove redundant `partial` keyword

* Remove default type of int for enum

`int` is already governing type for an enum

* Remove `global::` prefix for WinRT types

The ability to access a member in the global namespace is useful when a member might be hidden by another entity of the same name.

Example
```
class Foo
{
  public class System { }

  const int Console = 0;

  static void Main()
  {
    Console.WriteLine("Bar");
  }
}
```
The `Console.WriteLine` throws an error because it accesses Foo.Console, which is a constant. Using `System.Console` does no better, since it accesses `Foo.System` class, which does not have a static `WriteLine` method. The only way to get it to compile is to use `global::System.Console.WriteLine("Bar")`; however, it is not required in these instances.

* ThreadStaticAttribute does not do anything for instance members

* Move WinRT interop files to proper namespace

Follows convention used by WebView

* Clean up InkCanvas

- Remove `this`
- Use `inheritdoc` for documentation generation
- Remove unused using statement

* Clean up InkToolbar.cs

- Remove unused using
- Remove `this`

* Clean up InkToolbarCustomPenButton.cs

- Remove `this`

* Clean up InkToolbarCustomToolButton.cs

- Remove unused usings
- Remove `this`
- Remove `global::` alias

* Clean up InkToolbarIsStencilButtonCheckChangedEventArgs.cs

- Remove unused usings
- Simplify names
- Fix property `StencilKind` to use interop type instead of WinRT

* Clean up InkToolbarMenuButton.cs

- Remove unused using
- Remove `this`
- Remove cast to int on `MenuKind`. Enum is already int, so no need to cast then cast to enum.

* Clean up InkToolbarPenButton.cs

- Remove unused using
- Remove `this`

* Clean up InkToolbarStencilButton.cs

- Remove unused usings
- Remove `this`
- Remove `global::` in most places
- Convert `Ruler` to expression bodied member

* Clean up InkToolbarToggleButton.cs

- Remove unused usings
- Remove `this`
- Convert `ToggleKind` to expression body, remove unnecessary cast to int
- Remove `global::` in most places

* Clean up InkToolbarToolButton.cs

- Remove unused usings
- Remove `this`
- Remove most instances of `global::`
- Convert `ToolKind` to expression body, remove unnecessary cast to int

* Clean up BindingBase.cs

- Remove `this`

* Clean up BindingExpression.cs

- Remove `this`

* Clean up BringIntoViewOptions.cs

- Remove `this`

* Clean up Brush.cs

- Remove `this`
- Left review comments for uncaught NRE

* Clean up BrushTransition.cs

- Remove `this`

* Clean up MediaPlayerElement.cs

- Remove unused usings
- Remove `this`

* Leave review comment in MediaSourceConverter.cs

* Remove `Support` folder

Contents moved to WinRT/Interop folder

* Clean up WindowsXamlHostBaseExt.cs

- Add inheritdoc for documentation
- Remove `this`

* Clean up IWebViewCompatible.cs

- Remove unused using
- Group members (all properties, methods, events, etc. together)

* Clean up WebBaseCompatabilityAdapter.cs

- Group members

* Provide Web adapters correct implementation for IDispose pattern

* Clean up WebBrowserCompatabilityAdapter.cs

- Implement proper IDisposable
- Add null checks prior to operations to avoid ObjectDisposeException or NullRefrenceException

* Clean up WebViewCompatabilityAdapter.cs

- Add null checks for operations to avoid unhandled NRE

* Work in progress

* Fixing a merge error.

* updated folder names and updated toolbox xml file

* Add app.config/app.manifest to WinForms sample app

Required to support high DPI

* added visualstudiotoolsmanidest.xml to nuget package

* WIP while updating from master

* Designer now allows association between ink toolbar & its canvas.

* Ink canvas / toolbar updates, dug in on mediaplayerelement.

* MediaPlayerElement oprational to the same level of functionality as WPF edition.

* Project rename fix

* Fixing a reference that broke in merge.

* Ran UpdateHeaders.bat.

* Fixed release build config.

* Adding stub MDs for control documents.

* Add link to ExternDll.cs

* Adding md documentation for wrappers.

* Remove duplicate tag from build props
Move WebBrowserUriTypeConverter to shared

* Adding missing task extensions for both WPF & WinForms.

* Addressing a PR comment about comments.

* Adding no-op Pack targets for the build.

* removed samples apps from building in release mode

* Tweaked docs.

* Fixing TargetPlatformVersion / TargetPlatformMinVersion

* WIP

* Removing code from accidental commit from winforms branch.

* Temp solution to InkToolbar issue.

* set min target version

* Resolves review issues.

* Addressing PR 2299 change requests.

* Cosmetic change to trigger another build to see if it overcomes the OOM error in the previous build.

* updated win32 project to 17733

* updated comments

* removed Shadow.cs because Windows.UI.Xaml.Media.Shadow is removed from latest insider build. Replaced WebViewControl.AddpreLoadedScript with AddInitializeScript

* Clears up event handler on dispose of WidowsXamlHost.

* Renaming packages in #2299 (#2420)

* renamed win32 namespaces

* updated vs toolbox namespaces

* Update NativeDefines

- Move to correct namespace
- Update to use existing definitions for WM

* Update Win32 code

Move Win32 code into appropriate namespace. Fix issues with `NativeMethods` style classes and add documentation about when to use which and for what.

* Update namespace

- Remove unused namespaces
- Move `using` outside of `namespace` declaration

* Merge branch 'rjmurillo/XamlIslands' into rjmurillo/XamlIslands-ControlTest

* Fix AssemblyInfos for XamlHosts

* API feedback part 1

* API updates #2

* Code docs updates

- Separate remarks into `<remarks />` tag
- Link types with `<see />` tag
- Fix some typos

* fixed up solution and csproj

* Add Windows Forms Focus workaround for RS5

* Revert "Revert "Introduction of XamlHost""

This reverts commit 52001880f0877cc283c230f3840ed69e944ebbb1.

* Jimwilcox/xaml islands control test (#2431)

* Folded the latest work into the CTK.  This includes wrappers for MediaPlayerElement, InkCanvas, and InkToolbar.  There's also a new Samples app called TestSample (for the time being).  In order to accomplish this, the projects in the Win32 sln needed to be updated to .NET 4.7.2 and SDK 17686.

* Added WPF MapControl wrapper.

* Initial WPF wraps for SwapChainPanel & WebView.

* refactors setter implementation for consistency.  Fixes some missing event handlers in WebView (Lite).

* Minimally working demos of InkToolbar with InkToolBarCustomToolButton as a wrapped child control.  Not quite happy with this implementation, but wanted to bounce it off the team.

* Sets the appropriate type on the Wrapper attached property

* 95% code-generated wrappers (minor post-process touchups only)

* Fixes the binding issue on MediaPlayer property for one-way binding.

* Refactored events to use a dynamic wrapper for event args.

* Updates events to pattern that works, requiring event args wrappers. (thus adding 25 event args wrappers) and an additional control wrapper.

* WIP:  Refactoring WebView for fallback behavior.

* Committing this so I can test another branch.

* Restoring samples for Ink, Mediaplayer, et al.

* Checkpointing

* InkPresenter's pretty well fleshed out.

* Fixes compile issue.

* Pulled back on winmd ref changes.

* Map control is in the sample project now, and doesn't die, but doesn't show a map yet, either.

* looking into binding issues with the map control, but not convinced that's the issue.

* Added SwapChainPanel to sample

* Fixes references so that Debug & Release both build

* Attempts to apply dpi fixes to test sample project.  Also fixes implementation selection condition for WebViewCompatible.

* Updates required after merge.

* Removed SwapChainPanel, MapControl, and hopefully extraneous InkPresenter code.

* Revert "Removed SwapChainPanel, MapControl, and hopefully extraneous InkPresenter code."

This reverts commit 5f977c3fddad1d5bb2d72b367157892982e9c033.

* Ran UpdateHeaders.bat

* Experimentation with full control set.

* Restored to .NET 4.6.2

* Removed SecurityCriticalAttribute from class, not needed.

* Fixed a naming issue that surfaced in review.

* Got rid of the ".Compatible" namespace for the WebViewCompatible control.

* renamed Microsoft.Windows.Interop to Microsoft.Toolkit.Win32.UI.Interop. Convertet project to enable pack

* Regenerated wrappers including basic redirect pointers for documentation.  Included a few more wrappers and enums to simplify and reduce need for WinMD.

* split up Microsoft.Toolkit.Win32.UI.Controls in WPF and WinForms binaries sharing common code

* Fix references

- Add missing project references
- Use Windows.winmd set by Directory.Build
- Convert GAC references to NuGet packages

* updated headers

* Worked in the latest WindowsXamlHost / WindowsXamlHostBase (with a local extension to enable needed functionality).

* More properly integrates Interop.WPF code, extending WindowsXamlHostBase to sort out differences.

* Fixing some sample project breakages in an earlier brancrh to prove out the branch.

* Splitting WindowsXamlHost off to WPF & WinForms.  This is the WPF path.

* Pulls in Interop.WinForms.

* Moves wpf shared code in by link.

* Set IsFullscreenButtonVisibile = false in MediaPlayerElement since it's not supported.

* Moved the sample app to a more appropriate namespace / assembly name in prep for importing WinForms sample.  Also hammered out WebViewCompatible.

* Getting the WinForms Sample app in.

* Ran UpdateHeaders.bat

* Updated to use latest SDK (17713) via Directory.Build.props file.

* Making sure the samples uses Directory.Build.props target platform version.

* Got the WebViewCompatible partially operable.

* Almost there, checkpointing for a pull from rimuri/xaml-islands_more-fixes.

* StyleCop fixes for Microsoft.Toolkit.Win32.UI.Interop.WinForms

Some fixes still required for documentation and usage in some cases.

* StyleCop fixes for Microsoft.Toolkit.Win32.UI.Interop.WPF

* Optimize references

* Fixing a comment in directory.build.props.

* Fix commas in WindowsXamlHostBase.cs

* Fix StyleCop issues with DependencyObjectCollection.cs

* designer tweak

* fixes binding on the source property.

* Updated initialization of WebView in WebViewCompatibilityAdapter.

* Working out stylecop errors.

* Refactored to get rid of Windows dependency creeping out of WindowsXamlHostBase.

* fixed up release build configuration

* reverted tpm for all projects

* Set docking state before EndInit

Asynchronous initialization occurs after calling EndInit. To prevent multiple paints when the control is resized during initialization, move the dock style prior to EndInit to ensure the target HWND RECT.

* Correct order of members

* Implement IDisposable

WebView is disposable. Making WebViewCompatibilityAdapter disposable and dispose of WebView

* DRY out WinRT type detection

WebViewCompatible duplicated WinMD metadata detection

* Correct order of members

* Correct issues with merge

* Add missing file headers

* Remove redundant `partial` keyword

* Remove default type of int for enum

`int` is already governing type for an enum

* Remove `global::` prefix for WinRT types

The ability to access a member in the global namespace is useful when a member might be hidden by another entity of the same name.

Example
```
class Foo
{
  public class System { }

  const int Console = 0;

  static void Main()
  {
    Console.WriteLine("Bar");
  }
}
```
The `Console.WriteLine` throws an error because it accesses Foo.Console, which is a constant. Using `System.Console` does no better, since it accesses `Foo.System` class, which does not have a static `WriteLine` method. The only way to get it to compile is to use `global::System.Console.WriteLine("Bar")`; however, it is not required in these instances.

* ThreadStaticAttribute does not do anything for instance members

* Move WinRT interop files to proper namespace

Follows convention used by WebView

* Clean up InkCanvas

- Remove `this`
- Use `inheritdoc` for documentation generation
- Remove unused using statement

* Clean up InkToolbar.cs

- Remove unused using
- Remove `this`

* Clean up InkToolbarCustomPenButton.cs

- Remove `this`

* Clean up InkToolbarCustomToolButton.cs

- Remove unused usings
- Remove `this`
- Remove `global::` alias

* Clean up InkToolbarIsStencilButtonCheckChangedEventArgs.cs

- Remove unused usings
- Simplify names
- Fix property `StencilKind` to use interop type instead of WinRT

* Clean up InkToolbarMenuButton.cs

- Remove unused using
- Remove `this`
- Remove cast to int on `MenuKind`. Enum is already int, so no need to cast then cast to enum.

* Clean up InkToolbarPenButton.cs

- Remove unused using
- Remove `this`

* Clean up InkToolbarStencilButton.cs

- Remove unused usings
- Remove `this`
- Remove `global::` in most places
- Convert `Ruler` to expression bodied member

* Clean up InkToolbarToggleButton.cs

- Remove unused usings
- Remove `this`
- Convert `ToggleKind` to expression body, remove unnecessary cast to int
- Remove `global::` in most places

* Clean up InkToolbarToolButton.cs

- Remove unused usings
- Remove `this`
- Remove most instances of `global::`
- Convert `ToolKind` to expression body, remove unnecessary cast to int

* Clean up BindingBase.cs

- Remove `this`

* Clean up BindingExpression.cs

- Remove `this`

* Clean up BringIntoViewOptions.cs

- Remove `this`

* Clean up Brush.cs

- Remove `this`
- Left review comments for uncaught NRE

* Clean up BrushTransition.cs

- Remove `this`

* Clean up MediaPlayerElement.cs

- Remove unused usings
- Remove `this`

* Leave review comment in MediaSourceConverter.cs

* Remove `Support` folder

Contents moved to WinRT/Interop folder

* Clean up WindowsXamlHostBaseExt.cs

- Add inheritdoc for documentation
- Remove `this`

* Clean up IWebViewCompatible.cs

- Remove unused using
- Group members (all properties, methods, events, etc. together)

* Clean up WebBaseCompatabilityAdapter.cs

- Group members

* Provide Web adapters correct implementation for IDispose pattern

* Clean up WebBrowserCompatabilityAdapter.cs

- Implement proper IDisposable
- Add null checks prior to operations to avoid ObjectDisposeException or NullRefrenceException

* Clean up WebViewCompatabilityAdapter.cs

- Add null checks for operations to avoid unhandled NRE

* Work in progress

* Fixing a merge error.

* updated folder names and updated toolbox xml file

* Add app.config/app.manifest to WinForms sample app

Required to support high DPI

* added visualstudiotoolsmanidest.xml to nuget package

* WIP while updating from master

* Designer now allows association between ink toolbar & its canvas.

* Ink canvas / toolbar updates, dug in on mediaplayerelement.

* MediaPlayerElement oprational to the same level of functionality as WPF edition.

* Project rename fix

* Fixing a reference that broke in merge.

* Ran UpdateHeaders.bat.

* Fixed release build config.

* Adding stub MDs for control documents.

* Add link to ExternDll.cs

* Adding md documentation for wrappers.

* Remove duplicate tag from build props
Move WebBrowserUriTypeConverter to shared

* Adding missing task extensions for both WPF & WinForms.

* Addressing a PR comment about comments.

* Adding no-op Pack targets for the build.

* removed samples apps from building in release mode

* Tweaked docs.

* Fixing TargetPlatformVersion / TargetPlatformMinVersion

* WIP

* Removing code from accidental commit from winforms branch.

* Temp solution to InkToolbar issue.

* set min target version

* Resolves review issues.

* Addressing PR 2299 change requests.

* Cosmetic change to trigger another build to see if it overcomes the OOM error in the previous build.

* updated win32 project to 17733

* updated comments

* removed Shadow.cs because Windows.UI.Xaml.Media.Shadow is removed from latest insider build. Replaced WebViewControl.AddpreLoadedScript with AddInitializeScript

* Clears up event handler on dispose of WidowsXamlHost.

* Renaming packages in #2299 (#2420)

* renamed win32 namespaces

* updated vs toolbox namespaces

* Fix for local build for PR #2490 merged into #2299.

* Added missing projects to Release Build config.

* Revert "Fix for local build for PR #2490 merged into #2299."

This reverts commit d9202e06206de69092ef0ca7a007e6d92577bac6.

* Update NativeDefines

- Move to correct namespace
- Update to use existing definitions for WM

* Update Win32 code

Move Win32 code into appropriate namespace. Fix issues with `NativeMethods` style classes and add documentation about when to use which and for what.

* Update namespace

- Remove unused namespaces
- Move `using` outside of `namespace` declaration

* Merge branch 'rjmurillo/XamlIslands' into rjmurillo/XamlIslands-ControlTest

* Fix AssemblyInfos for XamlHosts

* API feedback part 1

* API updates #2

* Code docs updates

- Separate remarks into `<remarks />` tag
- Link types with `<see />` tag
- Fix some typos

* Changed the way SetContent works in WindowsXamlHostBase so that it doesn't expose Windows.winmd to the client.

* Code docs updates

- Separate remarks into `<remarks />` tag
- Link types with `<see />` tag
- Fix some typos

* Remove Ryland's test projects from SLN

* Make NativeDefines.cs consistent

New entries added that should use enum `WM`

* Use `var` in WindowsXamlHostBase.KeyboardFocus.cs

* Remove redundant `this` qualifier in WindowsXamlHostBase.KeyboardFocus.cs

* Remove unused `using` in WindowsXamlHostBase.KeyboardFocus.cs

* Fix for SA1505

* Resources designer namespace update

* Prevent _xamlSource from leaking

This field is only needed to surface the content through the `WindowsXamlHost.Child` property and does not otherwise need to be exposed to inherited classes when the property will suffice. To maintain the same API surface as the WPF control, a new API `SetContent` was added to take the `FrameworkElement`. The implementation of `SetContent(FrameworkElement)` is identical to `SetContent(UIElement)` other than the parameter type.

CC @ryalanms

* Work around CoreInputSink bug, Windows Forms Focus issue

* Update SetContent method

Change a6b20f57bbbe3d34b35bda5a7d2a5071b2c7a2d0 introduced a signature change

* Relax WebView fail fast when setting properties in XAML

Remove assert conditions for state and add comments as to what is happening and what expected behavior should be.

* Fixes after pulling in code from Rebased and ControlTest branches.

* Addresses items in PR #2432
2018-09-06 13:36:28 -04:00
Richard Murillo 8cd4369923 Make WindowsXamlHostBase.ChildInternal protected
This is needed to forward events in implemented controls; however, @GraniteStateHacker has a proposal to avoid exposing this element. Leaving the property in for merge then we can take the issue up when integrating with control work.
2018-09-04 15:48:22 -07:00
Richard Murillo 6fdd42f6b6 Update WindowsXamlHostBase.Focus to provide assignment to origin
Variable is used without assignment, which has thus var been uncaught by the compiler. Now the compiler is complaining that L117 references an uninitialized variable. L110 updated to assign a default instance of the Rect struct.

CC @ryalanms
2018-09-04 15:38:29 -07:00
Richard Murillo 9f8b4fccdf Update MetadataProviderDiscovery
Update to support Centennial application scenarios. Centennial applications have a different working directory as they are launched by a system process shim. Update to use the current type as a starting location, then use DirectoryInfo class to enumerate files (which is automatically intercepted and redirected via Desktop Bridge Shims).

CC @ryalanms
2018-09-04 15:35:43 -07:00
Jim Wilcox de264c5308 Merge branch 'XamlIslands-Rebased' of https://github.com/rjmurillo/UWPCommunityToolkit into XamlIslands-Rebased 2018-09-04 14:41:09 -04:00
Jim Wilcox e70a157234 Setting ChildInternal to internal in both WPF & Forms WindowsXamlHostBase 2018-09-04 14:40:49 -04:00
Richard Murillo 6d60b95570 Remove property group for Debug|AnyCPU 2018-09-04 11:37:20 -07:00
Richard Murillo b11d1be374 Remove GenerateAssemblyInfo attribute
Set to the default value, `true`
2018-09-04 11:30:22 -07:00
Ryland Alaniz 234dbcb030 Work around CoreInputSink bug, Windows Forms Focus issue
(cherry picked from commit 4fec4fb5abce3383e853e81b4e7e7d3ab16dbe9f)
2018-09-04 11:30:21 -07:00
Richard Murillo 9e112b6ca4 Swap NuGet package references for System.Runtime.WindowsRuntime
Packages System.Runtime.WindowsRuntime and System.Runtime.WindowsRuntime.UI.Xaml swapped with assembly versions shipped with .NET framework. Note that the assemblies do not show on the reference assembly browser and cannot be resolved by name alone. A hint path has been provided with the location of the assemblies on disk and is necessary for them to resolve.
2018-09-04 10:56:05 -07:00
Richard Murillo e89c3435ea Generate assembly info attributes
CC @onovotny
2018-09-04 10:41:32 -07:00
Richard Murillo a2ff438f69 Remove Code Access Security attributes
Remove CAS attributes per @onovotny
2018-09-04 10:30:12 -07:00
Jim Wilcox 181fc90234 Merge branch 'XamlIslands-Rebased' of https://github.com/rjmurillo/UWPCommunityToolkit into XamlIslands-Rebased 2018-08-28 19:13:19 -04:00
Jim Wilcox 1dd89a9529 Gets Windows.Xaml.UI.UIElement out of the WindowsXamlHostBase exposed footprint. 2018-08-28 19:13:07 -04:00
Richard Murillo d8275c60f9 Set target platform min versions for Xaml Islands
Class needed was introduced in Insiders SDK 17692. To ensure the SDK is installed, run `.\build\Install-WindowsSDKISO.ps1 17692`
2018-08-28 13:22:10 -07:00
Richard Murillo 6093c5964d Dispose of disposable field _xamlSource 2018-08-28 11:20:11 -07:00
Richard Murillo a9548fb2ed Remove unused P/Invoke
Remove `IntEnableWindow` P/Invoke as it is unused
2018-08-28 11:17:19 -07:00
Richard Murillo 03e6d93f14 Update error strings to use refactor-friendly names
Use `nameof` construct so that names in error messages are always correct
2018-08-28 11:16:31 -07:00
Richard Murillo 1e0297e9dd Cleanup WindowsXamlHostBase.KeyboardFocus.cs
- Use `var`
- Remove unused `using`
2018-08-28 10:51:40 -07:00
Richard Murillo 7a4ee5ae92 Make NativeDefines.cs consistent
New entries added that should use enum `WM`
2018-08-28 10:47:58 -07:00
Richard Murillo 8ae8ef342f Code docs updates
- Separate remarks into `<remarks />` tag
- Link types with `<see />` tag
- Fix some typos
2018-08-28 10:47:57 -07:00
Ryland Alaniz 0cf6c96138 Add Windows Forms Focus workaround for RS5 2018-08-28 10:47:57 -07:00
Ryland Alaniz 61013d771a API updates #2 2018-08-28 10:47:40 -07:00
Ryland Alaniz ba185a34ff API feedback part 1 2018-08-28 10:47:22 -07:00
Richard Murillo 8f426283ed Fix AssemblyInfos for XamlHosts 2018-08-28 10:20:19 -07:00
Richard Murillo 0cbda77700 XamlHost initial commit
- XamlHost for Windows Forms and WPF
- Documentation
2018-08-28 10:18:10 -07:00
Nikola Metulev d097f5bceb Revert "Introduction of XamlHost" 2018-08-27 08:46:02 -07:00
Richard Murillo 38e0e00852 XamlHost initial commit
- XamlHost for Windows Forms and WPF
- Documentation
2018-08-24 11:29:36 -07:00
Richard Murillo 28ff94e6df Merge branch 'master' into WebView/2374_Hang_On_Nav_After_InitializeComponent
# Conflicts:
#	Microsoft.Toolkit.Win32/Microsoft.Toolkit.Win32.UI.Controls/WPF/WebView/WebView.cs
2018-08-21 18:54:18 -07:00
Oren Novotny dd338383e3 Update Microsoft.Toolkit.Win32.UI.Controls.csproj 2018-08-20 12:33:56 -04:00
Richard Murillo a14e031d17 Merge branch 'master' into WindowsSDK_17723 2018-08-13 15:50:26 -07:00
Richard Murillo 1723874b7b Merge branch 'master' into WebView/2374_Hang_On_Nav_After_InitializeComponent 2018-08-13 15:50:11 -07:00
Richard Murillo 9636677982 Remove UI hang for some WPF WebView properties and methods
If a caller invokes a property or method that requires the web view to be initialized, it is common to have code to push empty frames onto the dispatcher queue until the web view initialization completed. However, depending on where the caller's code invoke the web view property or method, initialization may never occur and the control continues to dispatch empty frames to the queue.

This change modifies the initialization wait behavior for the following items:
- Properties
  - IsVisible
  - Process
- Methods
  - AddPreLoadedScript
  - GetDeferredPermissionRequestById
  - GoBack
  - GoForward
  - InvokeScript
  - InvokeScriptAsync
  - MoveFocus
  - Navigate
  - NavigateToLocal
  - NavigateToLocalStreamUri
  - NavigateToString
  - Refresh
  - Stop

Current behavior
- IsVisible. When invoking the getter a NullReferenceException may be thrown if the underlying web view control is not initialized.
- Process. Getter is blocked until initialization is completed.
- AddPreLoadedScript. If underlying web view control is not initialized do nothing.
- GetDeferredPermissionRequestById. Same as above.
- GoBack/GoForward. If underlying web view control is not initialized, perform no action and return FALSE.
- InvokeScript/InvokeScriptAsync. Methods are blocked until initialization is completed.
- MoveFocus. If underlying web view control is not initialized do nothing.
- Navigate/NavigateToLocal/NavigateToLocalStreamUri/NavigateToString. Method is blocked until web view is initialized.
- Refresh. If underlying web view control is not initialized do nothing.
- Stop. Same as above.

Modified behavior
- IsVisible. When invoking the getter, if the underlying web view control is not initialized FALSE is returned.
- Process. If control is not yet loaded, throw; otherwise, if control is loaded but underlying web view control is not initialized, wait for web view initialization; if Loaded and web view is initialized, invoke the callback.
- AddPreLoadedScript. If control is not yet loaded, wait for Loaded event to fire; if control is loaded but underlying web view control is not initialized, wait for web view initialization; if Loaded and web view is initialized, invoke the callback.
- GetDeferredPermissionRequestById. Same as above.
- GoBack/GoForward. If control is not yet loaded, throw; otherwise, if control is loaded but underlying web view control is not initialized, wait for web view initialization; if Loaded and web view is initialized, invoke the callback.
- InvokeScript/InvokeScriptAsync. Same as above.
- MoveFocus. If control is not yet loaded, wait for Loaded event to fire; if control is loaded but underlying web view control is not initialized, wait for web view initialization; if Loaded and web view is initialized, invoke the callback.
- Navigate/NavigateToLocal/NavigateToLocalStreamUri/NavigateToString. Same as above.
- Refresh. Same as above.
- Stop. Same as above.

Resolves #2374
2018-08-10 11:04:36 -07:00
Richard Murillo 16cbe72dbb Update Win32 WebView API due to change in 17723
New to 17723 is a change of name for the AddPreLoadedScript. It is now named AddInitializeScript. The existing method has been marked obsolete with directions to use the new method name. The old method will be removed in a future release of the toolkit.
2018-08-09 17:40:20 -07:00
Richard Murillo 9485c854b0 Update Microsoft.Toolkit.Win32.UI.Controls to 17723 2018-08-09 17:35:21 -07:00
Richard Murillo f6f816c4aa Merge branch 'master' into WebView/StateSharing 2018-08-08 17:47:02 -07:00
Richard Murillo 7e8e381b4d Add support for creating web views in the same WWAHost process
With the traditional API, invoking `new WebView()` would always create a web view in a new WWAHost and Win32WebViewHost process. In some cases, state needs to be shared between individual views, such as for single sign on scenarios, to avoid having each web view authenticate.  Edge does not persist session state to disk to both maintain performance and provide a safe way to remove session state in the event of a crash. When a new web view process is created, Edge internally copies all the session state it can to the new process. With the default .ctor each web view was created in its own WWAHost process, and each was treated as a new session, failing to inherit any of the ephemeral session state. However, any state that was persisted to disk, such as cookies with a future expiration, would be read into the new web view session.

The new API permits passing in a `WebViewControlProcess` via .ctor overload that will be used to create the process. An instance of `WebViewControlProcess` can be obtained by calling `new WebViewControlProcess()` or by using the `WebView.Process` property of an existing web view. Tests have also been added to ensure cookie behavior is maintained between web views in the same process, and thus the same session, but not web views that are in different processes (and thus in different sessions).

Resolves #2375
2018-08-08 17:40:38 -07:00
Richard Murillo 429b144841 Add tests for NavigateWithHttpMessage 2018-08-08 10:39:45 -07:00
Richard Murillo 288275829d Fix deadlock on InvokeScript
When calling WebView.InvokeScript from the UI thread, a deadlock may occur when the asynchronous task is captured within the UI context. Since each thread is waiting for the each other, the deadlock occurs.

An attempt to move the thread execution to the thread pool causes a similar issue, so the task is moved to a message loop to keep the UI responsive while the task is completed.
2018-08-07 14:21:14 -07:00
Nikola Metulev 8856cfee44 Merge pull request #2358 from rjmurillo/WebView/2356_40
Move WWAHost process creation into dispatcher 4.0.0
2018-08-07 09:12:24 -07:00
Richard Murillo 50817dc442 Add Close before HWND destroyed
During the disposal process the HWND for the control is destroyed, leaving an orphaned HWND core window. In RS4 this could case a lock up since it was expected that the Close method on WebViewControl would always be closed. During RS5 this was updated to ensure that Close is always called, even if the hosting process crashes or one of the supporting processes is terminated unexpectedly.

This change intercepts the DestoryHandle and OnHandleDestoryed methods of the Windows Forms WebView control to first call Close method. This starts a synchronous shutdown of all processes and unparents the HWNDs. By the time the actual disposal comes around, the control and its processes are already cleaned up and the UI remains responsive.

Note that this change is to work around a RS4 bug; however, its inclusion for RS5 does not impede compatibility or introduce any undesired consequences.
2018-08-06 14:51:02 -07:00