Skip to content

Commit

Permalink
Merged in @JanEgger's excellent changes that fixes #212. Thank you, Jan!
Browse files Browse the repository at this point in the history
  • Loading branch information
perlun committed Mar 15, 2014
2 parents 0513eb9 + f597643 commit d711cbc
Show file tree
Hide file tree
Showing 5 changed files with 191 additions and 132 deletions.
20 changes: 10 additions & 10 deletions CefSharp.BrowserSubprocess/JavascriptServiceHost.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using CefSharp.Internals.JavascriptBinding;
using System.Diagnostics;
using CefSharp.Internals.JavascriptBinding;
using System;
using System.ServiceModel;
using System.ServiceModel.Description;
Expand All @@ -9,22 +10,21 @@ internal class JavascriptServiceHost
{
public static ServiceHost Create(int parentProcessId, int browserId)
{
var uris = new[]
{
new Uri(JavascriptProxySupport.BaseAddress)
};

var host = new ServiceHost(typeof(JavascriptProxy), uris);
// The setup of the WCF host here is a bit non-trivial because we must support multiple subprocesses (when there is
// more than one WebView in the application, for example). Inspired by this SO post:
// http://stackoverflow.com/questions/10362246/two-unique-named-pipes-conflicting-and-invalidcredentialexception
var host = new ServiceHost(typeof(JavascriptProxy), new Uri[0]);
AddDebugBehavior(host);

var serviceName = JavascriptProxySupport.GetServiceName(parentProcessId, browserId);
var serviceName = JavascriptProxySupport.BaseAddress + "/" + JavascriptProxySupport.GetServiceName(parentProcessId, browserId);

KillExistingServiceIfNeeded(serviceName);

Kernel32.OutputDebugString("Setting up IJavascriptProxy using service name: " + serviceName);
host.AddServiceEndpoint(
typeof(IJavascriptProxy),
new NetNamedPipeBinding(),
serviceName
new Uri(serviceName)
);

host.Open();
Expand All @@ -39,7 +39,7 @@ private static void KillExistingServiceIfNeeded(string serviceName)
{
var channelFactory = new ChannelFactory<IJavascriptProxy>(
new NetNamedPipeBinding(),
new EndpointAddress(JavascriptProxySupport.BaseAddress + "/" + serviceName)
new EndpointAddress(serviceName)
);
channelFactory.Open(TimeSpan.FromSeconds(1));
var javascriptProxy = channelFactory.CreateChannel();
Expand Down
90 changes: 18 additions & 72 deletions CefSharp.Wpf.Example/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,76 +5,22 @@
xmlns:example="clr-namespace:CefSharp.Example;assembly=CefSharp.Example"
Title="CefSharp.Wpf.Example"
WindowState="Maximized">
<ContentControl x:Name="Content" />
<!--<Menu Height="22"
DockPanel.Dock="Top">
<MenuItem Header="File">
<MenuItem Header="Show Dev Tools"
Name="showDevToolsMenuItem"
Click="control_Activated" />
<MenuItem Header="Close Dev Tools"
Name="closeDevToolsMenuItem"
Click="control_Activated" />
<Separator />
<MenuItem Header="Exit"
Name="exitMenuItem"
Click="control_Activated" />
</MenuItem>
<MenuItem Header="Edit">
<MenuItem Header="Undo"
Name="undoMenuItem"
Click="control_Activated" />
<MenuItem Header="Redo"
Name="redoMenuItem"
Click="control_Activated" />
<Separator />
<MenuItem Header="Cut"
Name="cutMenuItem"
Click="control_Activated" />
<MenuItem Header="Copy"
Name="copyMenuItem"
Click="control_Activated" />
<MenuItem Header="Paste"
Name="pasteMenuItem"
Click="control_Activated" />
<MenuItem Header="Delete"
Name="deleteMenuItem"
Click="control_Activated" />
<MenuItem Header="Select All"
Name="selectAllMenuItem"
Click="control_Activated" />
</MenuItem>
<MenuItem Header="Tests">
<MenuItem Header="Test Resource Load Handler"
Name="testResourceLoadMenuItem"
Click="control_Activated" />
<MenuItem Header="Test Scheme Load Handler"
Name="testSchemeLoadMenuItem"
Click="control_Activated" />
<MenuItem Header="Test Execute JavaScript"
Name="testExecuteScriptMenuItem"
Click="control_Activated" />
<MenuItem Header="Test Evaluate JavaScript"
Name="testEvaluateScriptMenuItem"
Click="control_Activated" />
<MenuItem Header="Test Bind CLR Object to JavaScript"
Name="testBindMenuItem"
Click="control_Activated" />
<MenuItem Header="Test Console Message"
Name="testConsoleMessageMenuItem"
Click="control_Activated" />
<MenuItem Header="Test Tooltip"
Name="testTooltipMenuItem"
Click="control_Activated" />
<MenuItem Header="Test Popup"
Name="testPopupMenuItem"
Click="control_Activated" />
<MenuItem Header="Test Load String"
Name="testLoadStringMenuItem"
Click="control_Activated" />
<MenuItem Header="Test Cookie Visitor"
Name="testCookieVisitorMenuItem"
Click="control_Activated" />
</MenuItem>
</Menu>-->

<TabControl>
<TabItem Header="OneBrowser" >
<ContentControl x:Name="Content" />
</TabItem>

<TabItem Header="ManyBrowser" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>

<ContentControl x:Name="Content2" Grid.Row="0" />
<ContentControl x:Name="Content3" Grid.Row="1" />
</Grid>
</TabItem>
</TabControl>
</Window>
15 changes: 15 additions & 0 deletions CefSharp.Wpf.Example/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,21 @@ public MainWindow()
};

Content.Content = mainView;


mainView = new MainView
{
DataContext = new MainViewModel()
};

Content2.Content = mainView;

mainView = new MainView
{
DataContext = new MainViewModel()
};

Content3.Content = mainView;
}
}
}

0 comments on commit d711cbc

Please sign in to comment.