-
Notifications
You must be signed in to change notification settings - Fork 0
/
Form1.cs
222 lines (180 loc) · 10.1 KB
/
Form1.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Threading.Tasks;
using System.Windows.Forms;
using ChromeDroid_TabMan.Data;
using ChromeDroid_TabMan.Models;
using Microsoft.EntityFrameworkCore;
using ChromeDroid_TabMan.Auxiliary;
using AdvancedSharpAdbClient;
using ChromeDroid_TabMan.Connection_and_Import;
using ChromeDroid_TabMan.DTOs;
using System.Linq;
namespace ChromeDroid_TabMan
{
public partial class MainForm : Form
{
string AdbPath { get; set; }
string jsonLocation = string.Empty;
DataTable dataTable = new DataTable();
ITabsContainer tabsContainer =null;
public MainForm()
{
InitializeComponent();
WinFormsUtils.InitializeOrResetDataTableForTabsDataGridView(ref dataTable, ref dataGridView1);
WinFormsUtils.InitializeOrResetBrowserListComboBox(comboBox_BrowserSelect);
//var tabsList = TabsList.GetInstance();
//FillMyTreeView(tabsList);
//tabsList.ExportToHTML();
//tabsList.ExportToNetscapeBookmarksHTML();
}
private void tableLayoutPanel1_Paint(object sender, PaintEventArgs e)
{
}
private void groupBox1_Enter(object sender, EventArgs e)
{
}
private void groupBox1_Enter_1(object sender, EventArgs e)
{
}
private void button_connectfetchjson_Click(object sender, EventArgs e)
{
//string clickMessage = "Make sure to:\n 1) Have ADB and proper ADB drivers for your device.\n";
//clickMessage += "2) Have \"USB Debugging\" enabled on the device to recover from.\n";
//clickMessage += "3) Connect ONLY the Android device you want to recover from.\n";
//clickMessage += "4) Allow ADB Debugging from the pop-up on your device.\n";
//clickMessage += "5) Have Chrome open on your Android device.";
//MessageBox.Show(clickMessage, "REQUIREMENTS/INSTRUCTIONS", MessageBoxButtons.OK, MessageBoxIcon.Information);
//groupBox1.ForeColor = Color.White;
//importAndProcessGroupbox.ForeColor = Color.White;
//connectGroupBox.ForeColor = Color.Orange;
//need to add adb location selection window and an argument to take that in the StartChr... function.
//ImportUtilities.StartChromeAndroidJsonListServer(string.Empty); //for testing/debugging
if (this.AdbPath == null || this.AdbPath.Length == 0)
{
AdbPath = WinFormsUtils.GetADBPathDialog();
if (AdbPath == "-1")
{
AdbPath = string.Empty;
return;
}
}
//string adbPath = "C:\\Program Files (x86)\\Minimal ADB and Fastboot\\adb.exe";
//IAdbConnector adbConnector = new StaticSocketNameChromiumAdbConnector(adbPath, ConfigHelper.ADB.Chrome_PackageName, ConfigHelper.ADB.Chrome_ForwardParameter_Remote);
IChromiumDevToolsConnector adbConnector; //= new DynamicSocketNamePidAtEndChromiumAdbConnector(adbPath, ConfigHelper.ADB.Edge_PackageName, ConfigHelper.ADB.EdgeAndBrave_Base_ForwardParameterRemote__MissingPidAtEnd);
BrowserInfo browserDetails = (BrowserInfo) comboBox_BrowserSelect.SelectedValue;//.SelectedItem).BrowserDetails;
if (browserDetails.PackageName == null && browserDetails.Socket.IsSocketNameComplete)
adbConnector = new DiscoveredSocketOnlyDevToolsConnector(AdbPath, browserDetails.Socket.SocketConnectionStr);
else if (browserDetails.Socket.IsSocketNameComplete)
adbConnector = new StaticSocketNameChromiumDevToolsConnector(AdbPath, browserDetails.PackageName, browserDetails.Socket.SocketConnectionStr);
else
adbConnector = new DynamicSocketNamePidAtEndChromiumDevToolsConnector(AdbPath, browserDetails.PackageName, browserDetails.Socket.SocketConnectionStr);
ITabsJsonFetcher tabsJsonFetcher = new AdbTabsJsonFetcher(adbConnector);
jsonLocation = tabsJsonFetcher.FetchTabsJson();
comboBox_BrowserSelect.Enabled= false;
connectGroupBox.ForeColor = Color.Lime;
importAndProcessGroupbox.ForeColor = Color.Orange;
}
private void button_ImportAndProcess_Click(object sender, EventArgs e)
{
groupBox1.ForeColor = Color.White;
importAndProcessGroupbox.ForeColor = Color.Orange;
dataTable.Clear();
dataGridView1.Refresh();
tabListTree.Nodes.Clear();
tabListTree.Refresh();
ITabsImporter tabsImporter = new JsonToTabsImporter(jsonLocation);
tabsContainer = tabsImporter.Import();
WinFormsUtils.FillDataGridView(tabsContainer.AllTabInfs, ref dataTable, ref dataGridView1);
WinFormsUtils.FillTreeView(tabsContainer, ref tabListTree);
importAndProcessGroupbox.ForeColor = Color.Lime;
groupBox1.ForeColor = Color.Orange;
}
private void label2_Click(object sender, EventArgs e)
{
}
private void button_exportListHTMLGrouped_Click(object sender, EventArgs e)
{
//add select path dialog box??
ITabsExporter tabsExporter = new GroupedBasicHtmlListTabsExporter();
var outputPath = tabsExporter.Export(tabsContainer);
if(groupBox1.ForeColor!=Color.Lime)
{
groupBox1.ForeColor = Color.Yellow;
}
MessageBox.Show("The HTML List has been exported to: " + outputPath, "List Exported!", MessageBoxButtons.OK);
button_exportListHTMLGrouped.ForeColor = Color.Lime;
}
private void button_ExportAsBookmarksGrouped_Click(object sender, EventArgs e)
{
//add select path dialog box??
ITabsExporter tabsExporter = new GroupedNetscapeHtmlBookmarksExporter();
var outputPath = tabsExporter.Export(tabsContainer);
groupBox1.ForeColor = Color.Lime;
MessageBox.Show("The Bookmarks (grouped by base URL) file has been exported to: " + outputPath, "Bookmarks (grouped) Exported!", MessageBoxButtons.OK);
button_ExportAsBookmarksGrouped.ForeColor = Color.Lime;
}
private void button_selectjson_Click(object sender, EventArgs e)
{
groupBox1.ForeColor = Color.White;
importAndProcessGroupbox.ForeColor = Color.White;
connectGroupBox.ForeColor = Color.Orange;
MessageBox.Show("Button functionality may not be fully stable.", "!!! WORK IN PROGRESS !!!", MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
ITabsJsonFetcher tabsJsonFetcher = new SelectFileDialogTabsJsonFetcher();
jsonLocation = tabsJsonFetcher.FetchTabsJson();
connectGroupBox.ForeColor = Color.Lime;
importAndProcessGroupbox.ForeColor = Color.Orange;
}
private void button_ExportAsSQLiteDB_Click(object sender, EventArgs e)
{
//add select path dialog box??
ITabsExporter tabsExporter = new SQLiteTabsExporter();
var outputPath = tabsExporter.Export(tabsContainer);
groupBox1.ForeColor = Color.Lime;
MessageBox.Show("The SQLite3 Database has been exported to: " + outputPath, "SQLite Database Exported!", MessageBoxButtons.OK);
button_ExportAsSQLiteDB.ForeColor = Color.Lime;
}
private void button_exportCSV_Click(object sender, EventArgs e)
{
//add select path dialog box??
ITabsExporter tabsExporter = new CSVTextFilePairTabsExporter();
var outputPath = tabsExporter.Export(tabsContainer);
groupBox1.ForeColor = Color.Lime;
MessageBox.Show("The CSV text file has been exported to: " + outputPath, "CSV Exported!", MessageBoxButtons.OK);
button_exportCSV.ForeColor = Color.Lime;
}
private void button_ExportAsBookmarks_Click(object sender, EventArgs e)
{
//add select path dialog box??
ITabsExporter tabsExporter = new NetscapeHtmlBookmarksExporter();
var outputPath = tabsExporter.Export(tabsContainer);
groupBox1.ForeColor = Color.Lime;
MessageBox.Show("The Bookmarks file has been exported to: " + outputPath, "Bookmarks Exported!", MessageBoxButtons.OK);
button_ExportAsBookmarks.ForeColor = Color.Lime;
}
private void browserDetailsBindingSource_CurrentChanged(object sender, EventArgs e)
{
}
private async void button_FixOrDiscoverDevToolsSockets_Click_Async(object sender, EventArgs e)//open your targeted browser on your android phone to make sure its devtools socket is open.
{
MessageBox.Show("This feature will discover/rediscover and verify DevTools sockets available on your device. \nMake sure your browser of interest is open on your device and your device is connected.\n If one of the listed browsers isn't being verified, it may be listed below as a separate search result.", "READ ME!", MessageBoxButtons.OK, MessageBoxIcon.Information);
if (this.AdbPath == null || this.AdbPath.Length == 0)
{
AdbPath = WinFormsUtils.GetADBPathDialog();
if (AdbPath == "-1")
{
AdbPath = string.Empty;
return;
}
}
var devToolsSocketsFound = BrowserDiscoveryUtils.GetDevToolsSockets(AdbPath);
var newComboItemsList = BrowserDiscoveryUtils.GetDefaultBrowserComboItems();
var adbConn = AdbConnection.ConnectAndOrGetInstance(AdbPath);
await BrowserDiscoveryUtils.VerifyExistingSocketsAsync(newComboItemsList, devToolsSocketsFound, adbConn);
BrowserDiscoveryUtils.DiscoverNewSocketsAndOrFixKnownBrowsersWithUnexpectedSocketNames(newComboItemsList, devToolsSocketsFound, AdbPath);
WinFormsUtils.InitializeOrResetBrowserListComboBox(comboBox_BrowserSelect, newComboItemsList);
}
}
}