Return-Path: X-Original-To: apmail-incubator-callback-commits-archive@minotaur.apache.org Delivered-To: apmail-incubator-callback-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 67783DAD8 for ; Wed, 17 Oct 2012 23:27:02 +0000 (UTC) Received: (qmail 5378 invoked by uid 500); 17 Oct 2012 23:27:01 -0000 Delivered-To: apmail-incubator-callback-commits-archive@incubator.apache.org Received: (qmail 5226 invoked by uid 500); 17 Oct 2012 23:27:01 -0000 Mailing-List: contact callback-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: callback-dev@incubator.apache.org Delivered-To: mailing list callback-commits@incubator.apache.org Received: (qmail 4807 invoked by uid 99); 17 Oct 2012 23:27:01 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 17 Oct 2012 23:27:01 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id B07059449; Wed, 17 Oct 2012 23:27:00 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: purplecabbage@apache.org To: callback-commits@incubator.apache.org X-Mailer: ASF-Git Admin Mailer Subject: [7/50] [abbrv] Merging+Moving Windows7 specifics Message-Id: <20121017232700.B07059449@tyr.zones.apache.org> Date: Wed, 17 Oct 2012 23:27:00 +0000 (UTC) http://git-wip-us.apache.org/repos/asf/incubator-cordova-windows/blob/3711f4bc/Cordova/mp4patch.c ---------------------------------------------------------------------- diff --git a/Cordova/mp4patch.c b/Cordova/mp4patch.c deleted file mode 100644 index b377cc0..0000000 --- a/Cordova/mp4patch.c +++ /dev/null @@ -1,175 +0,0 @@ -// Copyright 2012 Intel Corporation -// -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -// For some reason, the mp4 files we generate using MF topologies show incorrect durations if several tracks are used - -// Pending a root cause explanation for this, work around the problem by overwriting the values in the duration field -// in the movie header - -// The mp4 files are structured as a collection of 'atoms' starting with two fields: - -// size (4 bytes) -// type (4 bytes) - -// Among the top level atoms, we're interested in the the movie (moov) atom, which should contain other atoms, -// including the movie header - -// movie duration should be the duration of the longest track -// time scale is the number of time units per second -// time in seconds since midnight, January 1, 1904, UTC - -// All integer values are stored in big endian form (most significant byte first) - -// Each track (track) contains an header (tkhd) - -#define WIN32_LEAN_AND_MEAN -#include - -// Couple of big-endian read/write macros -#define READ_BE4(addr) (*(addr) << 24) | (*(addr+1) << 16) | (*(addr+2) << 8) | *(addr+3) -#define WRITE_BE4(addr, val) *(addr) = val >> 24; *(addr+1) = (BYTE) (val >> 16); *(addr+2) = (BYTE) (val >> 8); *(addr+3) = (BYTE) val - -// The implementation is limited to 32 bits mp4 files for now as Media Foundation does not generate larger files - -void locate_moov(BYTE* start, DWORD size, BYTE** moov_start, DWORD* moov_size) -{ - // Check top level atoms - - DWORD cursor = 0; - DWORD atom_size; - DWORD atom_type; - - while (cursor + 8 < size) - { - atom_size = READ_BE4(start + cursor); - atom_type = READ_BE4(start + 4 + cursor); - - if (atom_type == 'moov') - { - *moov_start = start + cursor; - *moov_size = atom_size; - return; - } - - if (atom_size < 8) - return; - - cursor += atom_size; - } -} - -void locate_mvhd(BYTE* start, DWORD size, BYTE** mvhd_start, DWORD* mvhd_size) -{ - // Check atoms within moov, looking for mvhd - - DWORD cursor = 0; - DWORD atom_size; - DWORD atom_type; - - while (cursor + 8 < size) - { - atom_size = READ_BE4(start + cursor); - atom_type = READ_BE4(start + 4 + cursor); - - if (atom_type == 'mvhd') - { - *mvhd_start = start + cursor; - *mvhd_size = atom_size; - return; - } - - if (atom_size < 8) - return; - - cursor += atom_size; - } -} - - -void fix_mp4_duration (wchar_t* file_name, LONGLONG duration) -{ - HANDLE file_handle; - HANDLE mapping_handle; - - DWORD file_size; - BYTE* mapping_addr; - BYTE* moov_addr = 0; - BYTE* mvhd_addr = 0; - DWORD moov_size; - DWORD mvhd_size; - DWORD time_scale; - DWORD fixed_duration; - DWORD time_ratio; - - // Open file for read & write - file_handle = CreateFile(file_name, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0); - - if (file_handle == INVALID_HANDLE_VALUE) - return; - - file_size = GetFileSize(file_handle, 0); - - // Create mapping - mapping_handle = CreateFileMapping(file_handle, 0, PAGE_READWRITE, 0, 0, 0); - - if (mapping_handle == NULL) - goto close_file; - - // Create view - mapping_addr = (BYTE*) MapViewOfFile(mapping_handle, FILE_MAP_WRITE, 0, 0, file_size); - - // Locate top level movie atom - locate_moov(mapping_addr, file_size, &moov_addr, &moov_size); - - if (moov_addr) - { - // Inside it, locate movie header - locate_mvhd(moov_addr + 8, moov_size, &mvhd_addr, &mvhd_size); - - if (mvhd_addr) - { - // The movie header (mvhd) atom has the following fields: - // version (1 byte) - // flags (3 bytes) - // creation time, modification time, time scale, duration (4 bytes each) - - time_scale = READ_BE4(mvhd_addr + 4 + 4 + 1 + 3 + 4 + 4); - - if (time_scale) - { - time_ratio = (DWORD) (10000000L / time_scale); // Duration is passed as a number of 100 ns units - there are 10 million ticks per sec - fixed_duration = (DWORD) (duration/time_ratio); - - WRITE_BE4(mvhd_addr + 4 + 4 + 1 + 3 + 4 + 4 + 4, fixed_duration); - } - } - } - - if (mapping_addr) - UnmapViewOfFile(mapping_addr); - - CloseHandle(mapping_handle); - -close_file: - - CloseHandle(file_handle); -} - - - http://git-wip-us.apache.org/repos/asf/incubator-cordova-windows/blob/3711f4bc/Cordova/mp4patch.h ---------------------------------------------------------------------- diff --git a/Cordova/mp4patch.h b/Cordova/mp4patch.h deleted file mode 100644 index 377f0de..0000000 --- a/Cordova/mp4patch.h +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2012 Intel Corporation -// -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -void fix_mp4_duration (wchar_t* file_name, LONGLONG duration); - - http://git-wip-us.apache.org/repos/asf/incubator-cordova-windows/blob/3711f4bc/Cordova/network.c ---------------------------------------------------------------------- diff --git a/Cordova/network.c b/Cordova/network.c deleted file mode 100644 index 17951ea..0000000 --- a/Cordova/network.c +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2012 Intel Corporation -// -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -#define _WIN32_WINNT 0x0600 // Get access to GetIfEntry2 (Vista and newer), so we can distinguish hardware network interfaces from software ones - -#define WIN32_LEAN_AND_MEAN -#include - -#include -#include -#include - -#pragma comment(lib, "IPHLPAPI.lib") - -#include "network.h" - -//------------------------------------------------------------------------------------------------- - -// Determine type of the first network interface that's up -static HRESULT get_network_interface_type (BSTR callback_id) -{ - int if_type = 0; - MIB_IF_TABLE2 *if_table = 0; - unsigned int i; - wchar_t *type_as_text; - - // Retrieve list of network interfaces ; return -1 in case of error - if (GetIfTable2(&if_table)) - goto outahere; - - // Look for an active ethernet interface - for (i = 0; i < if_table->NumEntries; i++) - if (if_table->Table[i].InterfaceAndOperStatusFlags.HardwareInterface && if_table->Table[i].OperStatus == IfOperStatusUp && if_table->Table[i].Type == IF_TYPE_ETHERNET_CSMACD) - { - if_type = IF_TYPE_ETHERNET_CSMACD; - goto outahere; - } - - // Look for wifi - for (i = 0; i < if_table->NumEntries; i++) - if (if_table->Table[i].InterfaceAndOperStatusFlags.HardwareInterface && if_table->Table[i].OperStatus == IfOperStatusUp && if_table->Table[i].Type == IF_TYPE_IEEE80211) - { - if_type = IF_TYPE_IEEE80211; - goto outahere; - } - - // Look for anything marked as physical and up - for (i = 0; i < if_table->NumEntries; i++) - if (if_table->Table[i].InterfaceAndOperStatusFlags.HardwareInterface && if_table->Table[i].OperStatus == IfOperStatusUp) - { - if_type = if_table->Table[i].Type; - break; - } - -outahere: - // The returned value is 0 if there aren't any active interface, or one of the IF_TYPE_* codes from ipifcons.h - if (if_table) - FreeMibTable(if_table); - - switch (if_type) - { - case 0: - type_as_text = L"'none'"; - break; - - case IF_TYPE_ETHERNET_CSMACD: - type_as_text = L"'ethernet'"; - break; - - case IF_TYPE_IEEE80211: - type_as_text = L"'wifi'"; - break; - - default: - type_as_text = L"'unknown'"; - break; - } - - cordova_success_callback(callback_id, FALSE, type_as_text); - - return S_OK; -} - -HRESULT network_exec(BSTR callback_id, BSTR action, BSTR args, VARIANT *result) -{ - if (!wcscmp(action, L"getConnectionInfo")) - return get_network_interface_type(callback_id); - - return DISP_E_MEMBERNOTFOUND; -} - -DEFINE_CORDOVA_MODULE(Network, L"NetworkStatus", network_exec, NULL, NULL) \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cordova-windows/blob/3711f4bc/Cordova/network.h ---------------------------------------------------------------------- diff --git a/Cordova/network.h b/Cordova/network.h deleted file mode 100644 index 8eda9c1..0000000 --- a/Cordova/network.h +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2012 Intel Corporation -// -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -#include "shell.h" - -DECLARE_CORDOVA_MODULE(Network) \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cordova-windows/blob/3711f4bc/Cordova/notification.c ---------------------------------------------------------------------- diff --git a/Cordova/notification.c b/Cordova/notification.c deleted file mode 100644 index a185b11..0000000 --- a/Cordova/notification.c +++ /dev/null @@ -1,324 +0,0 @@ -// Copyright 2012 Intel Corporation -// -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -#include - -#define WIN32_LEAN_AND_MEAN -#include -#include - -#include "notification.h" -#include "json.h" - -extern HWND hWnd; - -#define FONT_SIZE 10 -#define FONT_NAME L"Arial" -#define MAX_BUTTONS 10 -#define ID_BASE 100 - -LRESULT CALLBACK NotificationDialogProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - int btn_id; - HWND hParent; - RECT parent_rect; - RECT dialog_rect; - RECT rc; - - switch (uMsg) - { - case WM_INITDIALOG: - - // Center the dialog within parent window - hParent = GetParent(hDlg); - - GetWindowRect(hParent, &parent_rect); - GetWindowRect(hDlg, &dialog_rect); - rc = parent_rect; - - OffsetRect(&dialog_rect, -dialog_rect.left, -dialog_rect.top); - OffsetRect(&rc, -rc.left, -rc.top); - OffsetRect(&rc, -dialog_rect.right, -dialog_rect.bottom); - - SetWindowPos(hDlg, HWND_TOP, parent_rect.left + rc.right*1/2, parent_rect.top + rc.bottom*1/2, 0, 0, SWP_NOSIZE); - return TRUE; - - case WM_COMMAND: - if (wParam == IDCANCEL) - { - EndDialog(hDlg, -1); - return FALSE; - } - else - { - btn_id = (SHORT) (LOWORD(wParam)); - EndDialog(hDlg, btn_id - ID_BASE); // Use large button IDs to avoid collisions with IDOK, IDCANCEL and friends - return TRUE; - } - - default: - return FALSE; - } -} - - -// Align an USHORT pointer to a 4 bytes aligned boundary, padding with zero if necessary -#define ALIGN4(cursor) if (((BYTE) cursor) & 2) *cursor++ = 0; - -// See http://msdn.microsoft.com/en-us/library/ms645394%28v=vs.85%29.aspx - - -LRESULT DisplayMessage(wchar_t* title, int title_len, wchar_t* message, int message_len, wchar_t* button_label[], int button_len[], int num_buttons) -{ - DLGTEMPLATE* dlg_template; - DLGITEMTEMPLATE* item_template; - WORD* cursor; // 16 bits words pointer - LRESULT ret_code; - void* buf; - int i; - int next_x; - int button_width = 80; // Width of a button - int button_gap = 6; // Width of the space separating two buttons - int left_margin = 10; // Left dialog margin - int right_margin = 10; // Right dialog margin - int top_margin = 10; - int bottom_margin = 10; - int static_height = 40; // Height of the space where static text is displayed - int static_to_buttons_margin = num_buttons > 0 ? 5 : 0; - int button_height = num_buttons > 0 ? 15 : 0; - int num_gaps = num_buttons ? num_buttons -1 : 0; - int static_width = num_buttons ? num_buttons * button_width + button_gap * num_gaps : 80; - int buf_len; - int font_len = wcslen(FONT_NAME); - - // Compute length of work buffer and allocate it - buf_len = sizeof(DLGTEMPLATE) + 4 + title_len + 1 + font_len + 1 + message_len + 1 + sizeof(DLGITEMTEMPLATE) + 4 + 2 + num_buttons * sizeof(DLGITEMTEMPLATE) + - + 100; // Allow for into account possible alignment padding as well as extra fields (class atoms, user data) - - for (i=0; istyle = WS_POPUP | WS_BORDER | WS_SYSMENU | DS_MODALFRAME | WS_CAPTION | DS_SETFONT; - dlg_template->dwExtendedStyle = 0; - dlg_template->cdit = 1 + num_buttons; // Number of controls - dlg_template->x = 0; // In Dialog Box Units - dlg_template->y = 0; - dlg_template->cx = left_margin + static_width + right_margin; - dlg_template->cy = top_margin + static_height + static_to_buttons_margin + button_height + bottom_margin; - - cursor = (WORD*)(dlg_template + 1); // Point past DLGTEMPLATE structure - *cursor++ = 0; // Menu - *cursor++ = 0; // Default Dialog class - - // Copy title, add NUL and shift cursor - wmemcpy(cursor, title, title_len); - cursor += title_len; - *cursor++ = 0; - - // Type point and font name (as DS_FONT was specified) - *cursor++ = FONT_SIZE; - wmemcpy(cursor, FONT_NAME, font_len); - cursor += font_len; - *cursor++ = 0; - - // Item templates need to be DWORD aligned - ALIGN4(cursor); - - // Static control - - item_template = (DLGITEMTEMPLATE*) cursor; - item_template->style = WS_CHILD | WS_VISIBLE | SS_CENTER; - item_template->dwExtendedStyle = 0; - item_template->x = left_margin; - item_template->y = top_margin; - item_template->cx = static_width; - item_template->cy = static_height; - item_template->id = -1; - - // Move past DLGITEMTEMPLATE structure - cursor = (WORD*)(item_template + 1); - - // Static class - *cursor++ = 0xFFFF; - *cursor++ = 0x0082; - - // Title - wmemcpy(cursor, message, message_len); - cursor += message_len; - *cursor++ = 0; - - // Empty user data block - *cursor++ = 0; - - next_x = left_margin; - - // Additional controls - for (i=0; istyle = WS_CHILD | WS_VISIBLE; - item_template->dwExtendedStyle = 0; - item_template->x = next_x; - item_template->y = top_margin + static_height + static_to_buttons_margin; - item_template->cx = button_width; - item_template->cy = button_height; - item_template->id = ID_BASE + i; - - next_x += button_width + button_gap; - - // Move past DLGITEMTEMPLATE structure - cursor = (WORD*)(item_template + 1); - - // Button class - *cursor++ = 0xFFFF; - *cursor++ = 0x0080; - - // Title - wmemcpy(cursor, button_label[i], button_len[i]); - cursor += button_len[i]; - *cursor++ = 0; - - // Empty user data block - *cursor++ = 0; - } - - ret_code = DialogBoxIndirect(GetModuleHandle(0), dlg_template, hWnd, NotificationDialogProc); - free(buf); - return ret_code; -} - -static HRESULT show_dialog(BSTR callback_id, BSTR args) -{ - wchar_t buf[10]; - int ret_code; - wchar_t* message = 0; - wchar_t* buttons = 0; - wchar_t* title = 0; - int num_buttons = 0; - wchar_t* btn_text[MAX_BUTTONS]; - int btn_text_len[MAX_BUTTONS]; - unsigned int cursor = 0; - - JsonArray array; - JsonItem item; - - // args should be like "["message","title","button1,button2"]" - - // Validate array contents - if (!json_parse_and_validate_args(args, &array, JSON_VALUE_STRING, - JSON_VALUE_STRING, - JSON_VALUE_STRING, - JSON_VALUE_INVALID)) { - json_free_args(array); - return -1; - } - - // message - item = json_array_get_first(array); - message = json_get_string_value(item); - - // title - item = json_array_get_next(item); - title = json_get_string_value(item); - - // buttons - item = json_array_get_next(item); - buttons = json_get_string_value(item); - if (*buttons == 0) - goto button_done; // No button ; consider that a valid use case - -button_parsing: - - btn_text[num_buttons] = buttons + cursor; - btn_text_len[num_buttons] = 0; - - // Search for separator - while (cursor < wcslen(buttons) && *(buttons + cursor) != L',') { - cursor++; - btn_text_len[num_buttons]++; - } - - num_buttons++; - - cursor++; - - if (cursor < wcslen(buttons) && num_buttons < MAX_BUTTONS) - goto button_parsing; - -button_done: - - json_free_args(array); - - ret_code = DisplayMessage(title, wcslen(title), message, wcslen(message), btn_text, btn_text_len, num_buttons); - - if (message) - free(message); - if (title) - free(title); - if (buttons) - free(buttons); - - wsprintf(buf, L"%d", ret_code); - - cordova_success_callback(callback_id, FALSE, buf); - - return S_OK; -} - -static HRESULT vibrate(BSTR callback_id, BSTR args) -{ - return S_OK; -} - -static HRESULT beep(BSTR callback_id, BSTR args) -{ - int count; - - args++; // skip initial '[' - *(args + wcslen(args) - 1) = 0; // remove trailing ']' - - for (count = _wtoi(args); count > 0; count--) { - MessageBeep(0xFFFFFFFF); - Sleep(100); - } - - return S_OK; -} - -HRESULT notification_exec(BSTR callback_id, BSTR action, BSTR args, VARIANT *result) -{ - if(!wcscmp(action, L"alert") || !wcscmp(action, L"confirm")) - return show_dialog(callback_id, args); - if (!wcscmp(action, L"vibrate")) - return vibrate(callback_id, args); - if (!wcscmp(action, L"beep")) - return beep(callback_id, args); - - return DISP_E_MEMBERNOTFOUND; -} - -DEFINE_CORDOVA_MODULE(Notification, L"Notification", notification_exec, NULL, NULL) http://git-wip-us.apache.org/repos/asf/incubator-cordova-windows/blob/3711f4bc/Cordova/notification.h ---------------------------------------------------------------------- diff --git a/Cordova/notification.h b/Cordova/notification.h deleted file mode 100644 index 8c43551..0000000 --- a/Cordova/notification.h +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2012 Intel Corporation -// -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -#include "shell.h" - -DECLARE_CORDOVA_MODULE(Notification) \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cordova-windows/blob/3711f4bc/Cordova/platform.c ---------------------------------------------------------------------- diff --git a/Cordova/platform.c b/Cordova/platform.c deleted file mode 100644 index 3b4f14a..0000000 --- a/Cordova/platform.c +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2012 Intel Corporation -// -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -#define WIN32_LEAN_AND_MEAN -#include - -#include "platform.h" - -static BOOL event_on = TRUE; - -BOOL is_back_button_event_enabled(void) -{ - return event_on; -} - -static HRESULT platform_exec(BSTR callback_id, BSTR action, BSTR args, VARIANT *result) -{ - if (!wcscmp(action, L"backButtonEventOn")) - { - event_on = TRUE; - return S_OK; - } - - if (!wcscmp(action, L"backButtonEventOff")) - { - event_on = FALSE; - return S_OK; - } - - return DISP_E_MEMBERNOTFOUND; -} - -DEFINE_CORDOVA_MODULE(Platform, L"Platform", platform_exec, NULL, NULL) \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cordova-windows/blob/3711f4bc/Cordova/platform.h ---------------------------------------------------------------------- diff --git a/Cordova/platform.h b/Cordova/platform.h deleted file mode 100644 index 398a58d..0000000 --- a/Cordova/platform.h +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2012 Intel Corporation -// -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -#include "shell.h" - -BOOL is_back_button_event_enabled (void); - -DECLARE_CORDOVA_MODULE(Platform) \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cordova-windows/blob/3711f4bc/Cordova/resource.h ---------------------------------------------------------------------- diff --git a/Cordova/resource.h b/Cordova/resource.h deleted file mode 100644 index 143eeef..0000000 --- a/Cordova/resource.h +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2012 Intel Corporation -// -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -#define IDB_ToolBar 100 -#define IDD_CaptureSettings 101 - -// Lists in capture settings dialog -#define IDC_Camera 102 -#define IDC_Microphone 103 -#define IDC_Resolution 104 -#define IDC_VideoEncoder 105 - -#define IDC_STATIC -1 - -// Toolbar buttons -#define ID_START_VIDEO 1 -#define ID_STOP_VIDEO 2 -#define ID_TAKE_PHOTO 3 -#define ID_PARAMETERS 4 -#define ID_RETURN 5 - http://git-wip-us.apache.org/repos/asf/incubator-cordova-windows/blob/3711f4bc/Cordova/resource.rc ---------------------------------------------------------------------- diff --git a/Cordova/resource.rc b/Cordova/resource.rc deleted file mode 100644 index 584fc9a..0000000 --- a/Cordova/resource.rc +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2012 Intel Corporation -// -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -#include "resource.h" -#include "winuser.rh" - -IDD_CaptureSettings DIALOGEX 0, 0, 350, 130 - -CAPTION "Capture Settings" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,236,109,50,14 - PUSHBUTTON "Cancel",IDCANCEL,290,109,50,14 - COMBOBOX IDC_Camera,85,11,250,300,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_Microphone,85,35,250,300,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_Resolution,85,59,250,300,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_VideoEncoder,85,83,250,300,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Camera:",IDC_STATIC,15,14,60,8 - LTEXT "Microphone:",IDC_STATIC,15,37,60,8 - LTEXT "Resolution:",IDC_STATIC,15,61,60,8 - LTEXT "Video Encoder:",IDC_STATIC,15,85,60,8 -END - -IDB_ToolBar BITMAP "toolbar.bmp" http://git-wip-us.apache.org/repos/asf/incubator-cordova-windows/blob/3711f4bc/Cordova/shell.c ---------------------------------------------------------------------- diff --git a/Cordova/shell.c b/Cordova/shell.c deleted file mode 100644 index 6235476..0000000 --- a/Cordova/shell.c +++ /dev/null @@ -1,1471 +0,0 @@ -// Copyright 2012 Intel Corporation -// -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -#include -#include // Unicode only for us - -#define CINTERFACE 1 // Get C definitions for COM header files -#include // IOleClientSite, IOleInPlaceFrame, IOleInPlaceSite -#include // IWebBrowser2 -#include // IHTMLDocument2 -#include // IDocHostUIHandler -#include // DISPID_TITLECHANGE - -#include // Network types - -#include // Let's initialize the common controls library -#pragma comment(lib, "comctl32.lib") // so they can be used with the process - -#include "shell.h" -#include "common.h" -#include "device.h" -#include "accel.h" -#include "capture.h" -#include "network.h" -#include "notification.h" -#include "storage.h" -#include "platform.h" -#include "file.h" -#include "filetransfer.h" -#include "compass.h" - -//------------------------------------------------------------------------------------------------- - -#define NOT_IMPLEMENTED __debugbreak(); OutputDebugStringA(__FUNCTION__); return 0; - -IWebBrowser2* browser_web_if; // IWebBrowser2 interface to the browser control -IOleObject* browser_ole_if; // IOleObject interface to the browser control, required to pass various OLE related parameters -IOleInPlaceObject* browser_ipo_if; // IOleInPlaceObject interface to the browser control, required to implement IOleInPlaceSite:OnPosRectChange - -IOleClientSite* browser_cs; -IOleInPlaceSite* browser_ips; -IOleInPlaceFrame* browser_ipf; -IDispatch* browser_dsp; // Browser event dispatcher -IDocHostUIHandler* browser_dui; -IDispatch* browser_ext; -IOleCommandTarget* browser_oct; - -DWORD browser_dsp_cookie; // Dispatcher connection id, as returned by the connection point Advise call - -IDispatch* document_dispatch_if; // Needed to get document interface -IHTMLDocument2* document_html2_if; // Needed to get window interface -IHTMLWindow2* html_window2_if; // Needed to run scripts - -static struct IOleClientSite clsi; -static struct IOleInPlaceSite inplsi; -static struct IOleInPlaceFrame inplfr; -static struct IDispatch disp; -static struct IDocHostUIHandler duih; -static struct IDispatch ext; -static struct IOleCommandTarget oct; - -int clsi_ref_count; -int inplsi_ref_count; -int inplfr_ref_count; -int disp_ref_count; -int inplfr_ref_count; -int duih_ref_count; -int ext_ref_count; -int oct_ref_count; - -const wchar_t gate_name[]= L"CordovaExec"; -#define DISPID_GATE 8086 - -#define APP_NAME L"Cordova Application" -#define BASE_URL L"www\\index.html" - -#define IE_GPU_REG_KEY L"Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_GPU_RENDERING" // Registry key enabling GPU acceleration -#define IE_COMPAT_REG_KEY L"Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION" // Registry key controlling browser version emulation - -wchar_t full_path[_MAX_PATH]; // We record our initial current directory name in there - -HWND hWnd; // Our main window handle -extern HWND hCaptureWnd; // Child window handle, when capturing video - -BSTR javascript; // Small utility object, used whenever invoking a js method - -void invoke_js_routine (wchar_t* wcs); - -#define STATE_STARTING 0 // Machinery starting -#define STATE_NATIVE_READY 1 // Native Ready event sent -#define STATE_PAUSED 2 // Paused -#define STATE_ENDING 3 // Machinery shutting down - -int current_state; // Rough operating state : not ready / ready / temporarily paused - -int skip_title_update = 1; // Title update skip counter, used to avoid initial "index.html" - -// Browser window subclassing -static WNDPROC initial_browser_wnd_proc; -LRESULT CALLBACK BrowserWndProcWrapper(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); - -//------------------------------------------------------------------------------------------------- - -static CordovaModule *module_list = NULL; - -static void register_cordova_module(CordovaModule *module) -{ - CordovaModule *item = module_list; - - if (module->init != NULL) - module->init(); - - if (!item) { - module_list = module; - return; - } - - module->next = module_list; - module_list = module; -} - - -static void close_cordova_module(CordovaModule *module) -{ - if (module->close != NULL) - module->close(); -} - -static void register_cordova_modules() -{ - register_cordova_module(CORDOVA_MODULE(Device)); - register_cordova_module(CORDOVA_MODULE(Camera)); - register_cordova_module(CORDOVA_MODULE(Capture)); - register_cordova_module(CORDOVA_MODULE(Accelerometer)); - register_cordova_module(CORDOVA_MODULE(Network)); - register_cordova_module(CORDOVA_MODULE(Notification)); - register_cordova_module(CORDOVA_MODULE(Storage)); - register_cordova_module(CORDOVA_MODULE(Platform)); - register_cordova_module(CORDOVA_MODULE(File)); - register_cordova_module(CORDOVA_MODULE(FileTransfer)); - register_cordova_module(CORDOVA_MODULE(Compass)); -} - -static void close_cordova_modules() -{ - close_cordova_module(CORDOVA_MODULE(Device)); - close_cordova_module(CORDOVA_MODULE(Camera)); - close_cordova_module(CORDOVA_MODULE(Capture)); - close_cordova_module(CORDOVA_MODULE(Accelerometer)); - close_cordova_module(CORDOVA_MODULE(Network)); - close_cordova_module(CORDOVA_MODULE(Notification)); - close_cordova_module(CORDOVA_MODULE(Storage)); - close_cordova_module(CORDOVA_MODULE(Platform)); - close_cordova_module(CORDOVA_MODULE(File)); - close_cordova_module(CORDOVA_MODULE(FileTransfer)); - close_cordova_module(CORDOVA_MODULE(Compass)); -} - -static CordovaModule *find_cordova_module(BSTR module_id) -{ - CordovaModule *item = module_list; - - while (item) { - if (!wcscmp(item->module_id, module_id)) - return item; - item = item->next; - } - - return NULL; -} - -static wchar_t *error_string_from_code(CallbackStatus code) -{ - switch (code) { - case CB_NO_RESULT: return L"cordova.callbackStatus.NO_RESULT"; - case CB_OK: return L"cordova.callbackStatus.OK"; - case CB_CLASS_NOT_FOUND_EXCEPTION: return L"cordova.callbackStatus.CLASS_NOT_FOUND_EXCEPTION"; - case CB_ILLEGAL_ACCESS_EXCEPTION: return L"cordova.callbackStatus.ILLEGAL_ACCESS_EXCEPTION"; - case CB_INSTANTIATION_EXCEPTION: return L"cordova.callbackStatus.INSTANTIATION_EXCEPTION"; - case CB_MALFORMED_URL_EXCEPTION: return L"cordova.callbackStatus.MALFORMED_URL_EXCEPTION"; - case CB_IO_EXCEPTION: return L"cordova.callbackStatus.IO_EXCEPTION"; - case CB_INVALID_ACTION: return L"cordova.callbackStatus.INVALID_ACTION"; - case CB_JSON_EXCEPTION: return L"cordova.callbackStatus.JSON_EXCEPTION"; - default: return L"cordova.callbackStatus.ERROR"; - } -} - -void cordova_success_callback(BSTR callback_id, BOOL keep_callback, const wchar_t *message) -{ - wchar_t *status_str = (message == NULL) ? error_string_from_code(CB_NO_RESULT) : error_string_from_code(CB_OK); - wchar_t *result = L"window.cordova.callbackSuccess('%s',{status:%s,keepCallback:%s,message:%s});"; - wchar_t *buf; - - buf = (wchar_t *) malloc(sizeof(wchar_t) * (1 + wcslen(result) + wcslen(callback_id) + wcslen(status_str) + wcslen(L"false") + wcslen(message))); - - wsprintf(buf, result, callback_id, status_str, keep_callback?L"true":L"false", message); - invoke_js_routine(buf); - - free(buf); -} - -void cordova_fail_callback(BSTR callback_id, BOOL keep_callback, CallbackStatus status, const wchar_t *message) -{ - wchar_t *status_str = error_string_from_code(status); - wchar_t *result = L"window.cordova.callbackError('%s',{status:%s,keepCallback:%s,message:%s});"; - wchar_t *buf; - - buf = (wchar_t *) malloc(sizeof(wchar_t) * (1 + wcslen(result) + wcslen(callback_id) + wcslen(status_str) + wcslen(L"false") + wcslen(message))); - - wsprintf(buf, result, callback_id, status_str, keep_callback?L"true":L"false", message); - invoke_js_routine(buf); - - free(buf); -} - -//------------------------------------------------------------------------------------------------- - -HRESULT STDMETHODCALLTYPE InPlFr_QueryInterface(IOleInPlaceFrame * This, REFIID riid, void **ppvObject) -{ - NOT_IMPLEMENTED -} - -ULONG STDMETHODCALLTYPE InPlFr_AddRef(IOleInPlaceFrame * This) -{ - NOT_IMPLEMENTED -} - -ULONG STDMETHODCALLTYPE InPlFr_Release(IOleInPlaceFrame * This) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE InPlFr_GetWindow(IOleInPlaceFrame * This, HWND *phwnd) -{ - *phwnd = hWnd; - return S_OK; -} - -HRESULT STDMETHODCALLTYPE InPlFr_ContextSensitiveHelp(IOleInPlaceFrame * This, BOOL fEnterMode) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE InPlFr_GetBorder(IOleInPlaceFrame * This, LPRECT lprectBorder) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE InPlFr_RequestBorderSpace(IOleInPlaceFrame * This, LPCBORDERWIDTHS pborderwidths) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE InPlFr_SetBorderSpace(IOleInPlaceFrame * This, LPCBORDERWIDTHS pborderwidths) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE InPlFr_SetActiveObject(IOleInPlaceFrame * This, IOleInPlaceActiveObject *pActiveObject, LPCOLESTR pszObjName) -{ - return S_OK; -} - -HRESULT STDMETHODCALLTYPE InPlFr_InsertMenus(IOleInPlaceFrame * This, HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE InPlFr_SetMenu(IOleInPlaceFrame * This, HMENU hmenuShared, HOLEMENU holemenu, HWND hwndActiveObject) -{ - return S_OK; -} - -HRESULT STDMETHODCALLTYPE InPlFr_RemoveMenus(IOleInPlaceFrame * This, HMENU hmenuShared) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE InPlFr_SetStatusText(IOleInPlaceFrame * This, LPCOLESTR pszStatusText) -{ - // Status updates - return S_OK; -} - -HRESULT STDMETHODCALLTYPE InPlFr_EnableModeless(IOleInPlaceFrame * This, BOOL fEnable) -{ - // We don't track the modeless flag state, but as this gets called, reply something meaningful - return S_OK; -} - -HRESULT STDMETHODCALLTYPE InPlFr_TranslateAccelerator(IOleInPlaceFrame * This, LPMSG lpmsg, WORD wID) -{ - NOT_IMPLEMENTED -} - -//------------------------------------------------------------------------------------------------- - -// IOleInPlaceFrame vtable -static IOleInPlaceFrameVtbl inplfr_vtable = -{ - InPlFr_QueryInterface, - InPlFr_AddRef, - InPlFr_Release, - InPlFr_GetWindow, - InPlFr_ContextSensitiveHelp, - InPlFr_GetBorder, - InPlFr_RequestBorderSpace, - InPlFr_SetBorderSpace, - InPlFr_SetActiveObject, - InPlFr_InsertMenus, // Enables the container to insert menu groups - InPlFr_SetMenu, // Adds a composite menu to the window frame containing the object being activated in place - InPlFr_RemoveMenus, // Removes a container's menu elements from the composite menu - InPlFr_SetStatusText, // Sets and displays status text about the in-place object in the container's frame window status line - InPlFr_EnableModeless, // Enables or disables a frame's modeless dialog boxes - InPlFr_TranslateAccelerator // Translates accelerator keystrokes intended for the container's frame while an object is active in place -}; - -//------------------------------------------------------------------------------------------------- - -HRESULT STDMETHODCALLTYPE InPlSi_QueryInterface(IOleInPlaceSite * This, REFIID riid, void **ppvObject) -{ - if (IsEqualIID(riid,&IID_IUnknown) || IsEqualIID(riid,&IID_IOleInPlaceSite)) - { - *ppvObject = browser_ips; - browser_ips->lpVtbl->AddRef(browser_ips); - return NOERROR; - } - - // We get queries for IID_ServiceProvider, IID_IOleCommandTarget - - *ppvObject = 0; - return E_NOINTERFACE; -} - -ULONG STDMETHODCALLTYPE InPlSi_AddRef(IOleInPlaceSite * This) -{ - inplsi_ref_count++; - - return inplsi_ref_count; -} - -ULONG STDMETHODCALLTYPE InPlSi_Release(IOleInPlaceSite * This) -{ - inplsi_ref_count--; - - ASSERT(inplsi_ref_count >= 0); - - return inplsi_ref_count; -} - -HRESULT STDMETHODCALLTYPE InPlSi_GetWindow(IOleInPlaceSite * This, HWND *phwnd) -{ - *phwnd = hWnd; - return S_OK; -} - -HRESULT STDMETHODCALLTYPE InPlSi_ContextSensitiveHelp(IOleInPlaceSite * This, BOOL fEnterMode) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE InPlSi_CanInPlaceActivate(IOleInPlaceSite * This) -{ - return S_OK; // Allow activation -} - -HRESULT STDMETHODCALLTYPE InPlSi_OnInPlaceActivate(IOleInPlaceSite * This) -{ - return S_OK; // Go ahead and activate object -} - -HRESULT STDMETHODCALLTYPE InPlSi_OnUIActivate(IOleInPlaceSite * This) -{ - return S_OK; -} - -HRESULT STDMETHODCALLTYPE InPlSi_GetWindowContext(IOleInPlaceSite * This, IOleInPlaceFrame **ppFrame, IOleInPlaceUIWindow **ppDoc, LPRECT lprcPosRect, LPRECT lprcClipRect, LPOLEINPLACEFRAMEINFO lpFrameInfo) -{ - *ppFrame = browser_ipf; - *ppDoc = 0; - GetClientRect(hWnd, lprcPosRect); - GetClientRect(hWnd, lprcClipRect); - - // The OLEINPLACEFRAMEINFO structure will need to be modified if we ever want custom keystrokes/accelerators - lpFrameInfo->cb = sizeof(OLEINPLACEFRAMEINFO); - lpFrameInfo->fMDIApp = FALSE; - lpFrameInfo->hwndFrame = hWnd; - lpFrameInfo->haccel = 0; - lpFrameInfo->cAccelEntries = 0; - - return S_OK; -} - -HRESULT STDMETHODCALLTYPE InPlSi_Scroll(IOleInPlaceSite * This, SIZE scrollExtant) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE InPlSi_OnUIDeactivate(IOleInPlaceSite * This, BOOL fUndoable) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE InPlSi_OnInPlaceDeactivate(IOleInPlaceSite * This) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE InPlSi_DiscardUndoState(IOleInPlaceSite * This) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE InPlSi_DeactivateAndUndo(IOleInPlaceSite * This) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE InPlSi_OnPosRectChange(IOleInPlaceSite * This, LPCRECT lprcPosRect) -{ - if (browser_ipo_if && browser_ipo_if->lpVtbl) - browser_ipo_if->lpVtbl->SetObjectRects(browser_ipo_if, lprcPosRect, lprcPosRect); - - return S_OK; -} - -//------------------------------------------------------------------------------------------------- - -// IOleInPlaceSite vtable -static IOleInPlaceSiteVtbl inplsi_vtable = -{ - InPlSi_QueryInterface, - InPlSi_AddRef, - InPlSi_Release, - InPlSi_GetWindow, - InPlSi_ContextSensitiveHelp, - InPlSi_CanInPlaceActivate, // Determines whether the container can activate the object in place - InPlSi_OnInPlaceActivate, // Notifies the container that one of its objects is being activated in place - InPlSi_OnUIActivate, // Notifies the container that the object is about to be activated in place and that the object is going to replace the container's main menu with an in-place composite menu - InPlSi_GetWindowContext, // Enables an in-place object to retrieve the window interfaces that form the window object hierarchy, and the position in the parent window where the object's in-place activation window should be located - InPlSi_Scroll, // Instructs the container to scroll the view of the object by the specified number of pixels - InPlSi_OnUIDeactivate, // Notifies the container to reinstall its user interface and take focus - InPlSi_OnInPlaceDeactivate, // Notifies the container that it should reinstall its user interface and take focus, and whether the object has an undoable state - InPlSi_DiscardUndoState, // Instructs the container to discard its undo state - InPlSi_DeactivateAndUndo, // Deactivates the object, ends the in-place session, and reverts to the container's saved undo state - InPlSi_OnPosRectChange // Notifies the container that the object extents have changed -}; - -//------------------------------------------------------------------------------------------------- - -HRESULT STDMETHODCALLTYPE DUIH_QueryInterface(IDocHostUIHandler * This, REFIID riid, void **ppvObject) -{ - if (IsEqualIID(riid,&IID_IUnknown) || IsEqualIID(riid,&IID_IDocHostUIHandler)) - { - *ppvObject = browser_dui; - browser_dui->lpVtbl->AddRef(browser_dui); - return NOERROR; - } - - // We're using IOleCommandTarget to intercept javascript error dialogs - if (IsEqualIID(riid,&IID_IOleCommandTarget)) - { - *ppvObject = browser_oct; - browser_oct->lpVtbl->AddRef(browser_oct); - return NOERROR; - } - - *ppvObject = 0; - return E_NOINTERFACE; -} - -ULONG STDMETHODCALLTYPE DUIH_AddRef(IDocHostUIHandler * This) -{ - duih_ref_count++; - - return duih_ref_count; -} - -ULONG STDMETHODCALLTYPE DUIH_Release(IDocHostUIHandler * This) -{ - duih_ref_count--; - - ASSERT(duih_ref_count >= 0); - - return duih_ref_count; -} - -HRESULT STDMETHODCALLTYPE DUIH_ShowContextMenu(IDocHostUIHandler * This, DWORD dwID, POINT *ppt, IUnknown *pcmdtReserved, IDispatch *pdispReserved) -{ - // Pretend we take care of all menus but copy & paste - so the HTML control does not show its own contextual menus - if (dwID == CONTEXT_MENU_TEXTSELECT) - return S_FALSE; - else - return S_OK; -} - -HRESULT STDMETHODCALLTYPE DUIH_GetHostInfo(IDocHostUIHandler * This, DOCHOSTUIINFO *pInfo) -{ - // Specify some of our UI tastes to the HTML control - pInfo->cbSize = sizeof(DOCHOSTUIINFO); - pInfo->dwFlags = DOCHOSTUIFLAG_DISABLE_HELP_MENU | DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE | DOCHOSTUIFLAG_NO3DOUTERBORDER | DOCHOSTUIFLAG_SCROLL_NO | - DOCHOSTUIFLAG_ENABLE_INPLACE_NAVIGATION | DOCHOSTUIFLAG_NOTHEME | DOCHOSTUIFLAG_DPI_AWARE | DOCHOSTUIFLAG_ENABLE_ACTIVEX_INACTIVATE_MODE; - return S_OK; -} - -HRESULT STDMETHODCALLTYPE DUIH_ShowUI(IDocHostUIHandler * This, DWORD dwID, IOleInPlaceActiveObject *pActiveObject, IOleCommandTarget *pCommandTarget, IOleInPlaceFrame *pFrame, IOleInPlaceUIWindow *pDoc) -{ - return S_FALSE; // Use the HTML control's UI rather than our own, for now -} - -HRESULT STDMETHODCALLTYPE DUIH_HideUI(IDocHostUIHandler * This) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE DUIH_UpdateUI(IDocHostUIHandler * This) -{ - // We don't have any special UI to update at the host application level - return S_OK; -} - -HRESULT STDMETHODCALLTYPE DUIH_EnableModeless(IDocHostUIHandler * This, BOOL fEnable) -{ - // We don't track the modeless flag state, but as this gets called, reply something meaningful - return S_OK; -} - -HRESULT STDMETHODCALLTYPE DUIH_OnDocWindowActivate(IDocHostUIHandler * This, BOOL fActivate) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE DUIH_OnFrameWindowActivate(IDocHostUIHandler * This, BOOL fActivate) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE DUIH_ResizeBorder(IDocHostUIHandler * This, LPCRECT prcBorder, IOleInPlaceUIWindow *pUIWindow, BOOL fRameWindow) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE DUIH_TranslateAccelerator(IDocHostUIHandler * This, LPMSG lpMsg, const GUID *pguidCmdGroup, DWORD nCmdID) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE DUIH_GetOptionKeyPath(IDocHostUIHandler * This, LPOLESTR *pchKey, DWORD dw) -{ - return S_FALSE; // Don't use customized settings : use whatever is stored in the default IE registry area -} - -HRESULT STDMETHODCALLTYPE DUIH_GetDropTarget(IDocHostUIHandler * This, IDropTarget *pDropTarget, IDropTarget **ppDropTarget) -{ - return E_NOTIMPL; // We don't supply a customized drop target -} - -HRESULT STDMETHODCALLTYPE DUIH_GetExternal(IDocHostUIHandler * This, IDispatch **ppDispatch) -{ - // Plug generic dispatcher that will allow calls from the javascript side - browser_ext->lpVtbl->AddRef(browser_ext); - *ppDispatch = browser_ext; - return S_OK; -} - -HRESULT STDMETHODCALLTYPE DUIH_TranslateUrl(IDocHostUIHandler * This, DWORD dwTranslate, OLECHAR *pchURLIn, OLECHAR **ppchURLOut) -{ - return S_FALSE; // Don't translate -} - -HRESULT STDMETHODCALLTYPE DUIH_FilterDataObject(IDocHostUIHandler * This, IDataObject *pDO, IDataObject **ppDORet) -{ - NOT_IMPLEMENTED -} - -//------------------------------------------------------------------------------------------------- - -// IDocHostUIHandler vtable -static IDocHostUIHandlerVtbl duih_vtable = -{ - DUIH_QueryInterface, - DUIH_AddRef, - DUIH_Release, - DUIH_ShowContextMenu, - DUIH_GetHostInfo, - DUIH_ShowUI, - DUIH_HideUI, - DUIH_UpdateUI, - DUIH_EnableModeless, - DUIH_OnDocWindowActivate, - DUIH_OnFrameWindowActivate, - DUIH_ResizeBorder, - DUIH_TranslateAccelerator, - DUIH_GetOptionKeyPath, - DUIH_GetDropTarget, - DUIH_GetExternal, - DUIH_TranslateUrl, - DUIH_FilterDataObject -}; - -//------------------------------------------------------------------------------------------------- - -HRESULT STDMETHODCALLTYPE OCT_QueryInterface (IOleCommandTarget* This, REFIID riid, void **ppvObject) -{ - if (IsEqualIID(riid,&IID_IUnknown) || IsEqualIID(riid,&IID_IOleCommandTarget)) - { - *ppvObject = browser_oct; - browser_oct->lpVtbl->AddRef(browser_oct); - return NOERROR; - } - - *ppvObject = 0; - return E_NOINTERFACE; -} - -ULONG STDMETHODCALLTYPE OCT_AddRef (IOleCommandTarget* This) -{ - oct_ref_count++; - - return oct_ref_count; -} - -ULONG STDMETHODCALLTYPE OCT_Release (IOleCommandTarget* This) -{ - oct_ref_count--; - - ASSERT(oct_ref_count >= 0); - - return oct_ref_count; -} - -HRESULT STDMETHODCALLTYPE OCT_QueryStatus (IOleCommandTarget* This,const GUID* pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[ ], OLECMDTEXT* pCmdText) -{ - return E_NOTIMPL; -} - -HRESULT STDMETHODCALLTYPE OCT_Exec (IOleCommandTarget* This, const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT* pvaIn, VARIANT* pvaOut) -{ - if (pguidCmdGroup && IsEqualGUID(pguidCmdGroup, &CGID_DocHostCommandHandler)) - switch (nCmdID) - { - case OLECMDID_SHOWMESSAGE: - return OLECMDERR_E_NOTSUPPORTED; - - case OLECMDID_SHOWSCRIPTERROR: - // The JavaScript engine reported an error: stop running scripts on the page - pvaOut->vt = VT_BOOL; - pvaOut->boolVal = VARIANT_FALSE; - return S_OK; - - default: - return OLECMDERR_E_NOTSUPPORTED; - } - - return OLECMDERR_E_UNKNOWNGROUP; -} - -// IOleCommandTarget vtable -static IOleCommandTargetVtbl oct_vtable = -{ - OCT_QueryInterface, - OCT_AddRef, - OCT_Release, - OCT_QueryStatus, - OCT_Exec -}; - -//------------------------------------------------------------------------------------------------- - -HRESULT STDMETHODCALLTYPE ClSi_QueryInterface(IOleClientSite * This, REFIID riid, void **ppvObject) -{ - if (IsEqualIID(riid,&IID_IUnknown) || IsEqualIID(riid,&IID_IOleClientSite)) - { - *ppvObject = browser_cs; - browser_cs->lpVtbl->AddRef(browser_cs); - return NOERROR; - } - - if (IsEqualIID(riid,&IID_IOleInPlaceSite)) - { - *ppvObject = browser_ips; - browser_ips->lpVtbl->AddRef(browser_ips); - return NOERROR; - } - - if (IsEqualIID(riid,&IID_IServiceProvider)) - { - *ppvObject = 0; - return E_NOINTERFACE; - } - - if (IsEqualIID(riid,&IID_IDispatch)) - { - *ppvObject = 0; - return E_NOINTERFACE; - } - - if (IsEqualIID(riid,&IID_IDocHostUIHandler)) - { - *ppvObject = browser_dui; - browser_dui->lpVtbl->AddRef(browser_dui); - return NOERROR; - } - - *ppvObject = 0; - return E_NOINTERFACE; -} - -ULONG STDMETHODCALLTYPE ClSi_AddRef(IOleClientSite * This) -{ - clsi_ref_count++; - if (clsi_ref_count == 1) - { - // Initialize sub-objects - } - - return clsi_ref_count; -} - -ULONG STDMETHODCALLTYPE ClSi_Release(IOleClientSite * This) -{ - clsi_ref_count--; - - ASSERT(clsi_ref_count >= 0); - - // Dispose of our sub-objects here - return clsi_ref_count; -} - -HRESULT STDMETHODCALLTYPE ClSi_SaveObject(IOleClientSite * This) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE ClSi_GetMoniker(IOleClientSite * This, DWORD dwAssign, DWORD dwWhichMoniker, IMoniker **ppmk) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE ClSi_GetContainer(IOleClientSite * This, IOleContainer **ppContainer) -{ - // We don't support IOleContainer interface at that time - *ppContainer = 0; - return E_NOINTERFACE; -} - -HRESULT STDMETHODCALLTYPE ClSi_ShowObject(IOleClientSite * This) -{ - return S_OK; -} - -HRESULT STDMETHODCALLTYPE ClSi_OnShowWindow(IOleClientSite * This, BOOL fShow) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE ClSi_RequestNewObjectLayout(IOleClientSite * This) -{ - NOT_IMPLEMENTED -} - -//------------------------------------------------------------------------------------------------- - -// IOleClientSite vtable -static IOleClientSiteVtbl clsi_vtable = -{ - ClSi_QueryInterface, - ClSi_AddRef, - ClSi_Release, - ClSi_SaveObject, // Saves the embedded object associated with the client site - ClSi_GetMoniker, // Retrieves a moniker for the object's client site - ClSi_GetContainer, // Retrieves a pointer to the object's container - ClSi_ShowObject, // Asks a container to display its object to the user - ClSi_OnShowWindow, // Notifies a container when an embedded object's window is about to become visible or invisible - ClSi_RequestNewObjectLayout // Asks a container to resize the display site for embedded objects -}; - -//------------------------------------------------------------------------------------------------- - -void invoke_js_routine (wchar_t* wcs) -{ - BSTR wcs_as_bstr; - - wcs_as_bstr = SysAllocString(wcs); - PostMessage(hWnd, WM_EXEC_JS_SCRIPT, 0, (LPARAM) wcs_as_bstr); -} - -//------------------------------------------------------------------------------------------------- - -BOOL CALLBACK enum_proc(HWND window, LPARAM reply) -{ - static wchar_t wanted[] = L"Internet Explorer_Server"; - char buf[sizeof(wanted)]; - - if (GetClassName(window, (wchar_t*) buf, sizeof(wanted)/sizeof(wanted[0])) - && !memcmp(buf, wanted, sizeof(wanted))) - { - // Report success and stop enumeration - (*(HWND*) reply) = window; - return FALSE; - } - else - return TRUE; -} - -void set_native_ready (void) -{ - // Find browser window and subclass its window proc so we can intercept back key presses... - HWND hBrowserWnd = 0; - WNDPROC browser_wnd_proc; - - EnumChildWindows(hWnd, enum_proc, (LPARAM) &hBrowserWnd); - - browser_wnd_proc = (WNDPROC) GetWindowLong(hBrowserWnd, GWL_WNDPROC); - if (browser_wnd_proc && browser_wnd_proc != BrowserWndProcWrapper) - { - initial_browser_wnd_proc = browser_wnd_proc; - SetWindowLong(hBrowserWnd, GWL_WNDPROC, (LONG) BrowserWndProcWrapper); - BringWindowToTop(hBrowserWnd); - } - - // Fire onNativeReady event - invoke_js_routine(L"cordova.require('cordova/channel').onNativeReady.fire();"); -} - -//------------------------------------------------------------------------------------------------- - -HRESULT STDMETHODCALLTYPE Ext_QueryInterface(IDispatch * This, REFIID riid, void **ppvObject) -{ - if (IsEqualIID(riid,&IID_IUnknown) || IsEqualIID(riid,&IID_IDispatch)) - { - *ppvObject = browser_ext; - browser_ext->lpVtbl->AddRef(browser_ext); - return NOERROR; - } - - *ppvObject = 0; - return E_NOINTERFACE; -} - -ULONG STDMETHODCALLTYPE Ext_AddRef(IDispatch * This) -{ - ext_ref_count++; - - return ext_ref_count; -} - -ULONG STDMETHODCALLTYPE Ext_Release(IDispatch * This) -{ - ext_ref_count--; - - ASSERT(ext_ref_count >= 0); - - return ext_ref_count; -} - -HRESULT STDMETHODCALLTYPE Ext_GetTypeInfoCount(IDispatch * This, UINT *pctinfo) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE Ext_GetTypeInfo(IDispatch * This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE Ext_GetIDsOfNames(IDispatch * This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) -{ - HRESULT hr = S_OK; - UINT i; - - // Map method name to integer - for ( i=0; i < cNames; i++) - if (CompareString( lcid, NORM_IGNORECASE, gate_name, -1, rgszNames[i], -1 ) == CSTR_EQUAL) - rgDispId[i] = DISPID_GATE; - else - { - // At least one unknown selector - rgDispId[i] = DISPID_UNKNOWN; - hr = DISP_E_UNKNOWNNAME; - } - - return hr; -} - -HRESULT STDMETHODCALLTYPE Ext_Invoke(IDispatch * This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) -{ - if (dispIdMember == DISPID_GATE) - { - if (wFlags & DISPATCH_METHOD) - { - CordovaModule *module; - - // Check params - if (pDispParams->cArgs != 4) - return DISP_E_BADPARAMCOUNT; - - if (pDispParams->rgvarg[0].vt != VT_BSTR || - pDispParams->rgvarg[1].vt != VT_BSTR || - pDispParams->rgvarg[2].vt != VT_BSTR || - pDispParams->rgvarg[3].vt != VT_BSTR) - return DISP_E_TYPEMISMATCH; - - // Find module - module = find_cordova_module(pDispParams->rgvarg[2].bstrVal); - if (module == NULL) - return DISP_E_MEMBERNOTFOUND; - - // Execute command - return module->exec(pDispParams->rgvarg[3].bstrVal, pDispParams->rgvarg[1].bstrVal, pDispParams->rgvarg[0].bstrVal, pVarResult); - } - } - - return DISP_E_MEMBERNOTFOUND; -} - -//------------------------------------------------------------------------------------------------- -//------------------------------------------------------------------------------------------------- - -HRESULT STDMETHODCALLTYPE Disp_QueryInterface(IDispatch * This, REFIID riid, void **ppvObject) -{ - if (IsEqualIID(riid,&IID_IUnknown) || IsEqualIID(riid,&IID_IDispatch)) - { - *ppvObject = browser_dsp; - browser_dsp->lpVtbl->AddRef(browser_dsp); - return NOERROR; - } - - // We also get called for DIID_DWebBrowserEvents2, but IDispatch is fine - - *ppvObject = 0; - return E_NOINTERFACE; -} - -ULONG STDMETHODCALLTYPE Disp_AddRef(IDispatch * This) -{ - disp_ref_count++; - - return disp_ref_count; -} - -ULONG STDMETHODCALLTYPE Disp_Release(IDispatch * This) -{ - disp_ref_count--; - - ASSERT(disp_ref_count >= 0); - - return disp_ref_count; -} - -HRESULT STDMETHODCALLTYPE Disp_GetTypeInfoCount(IDispatch * This, UINT *pctinfo) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE Disp_GetTypeInfo(IDispatch * This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE Disp_GetIDsOfNames(IDispatch * This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) -{ - NOT_IMPLEMENTED -} - -HRESULT STDMETHODCALLTYPE Disp_Invoke(IDispatch * This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) -{ - HRESULT hr; - wchar_t* title; - - // That's our DIID_DWebBrowserEvents2 event sink callback - - switch (dispIdMember) - { - case DISPID_DOCUMENTCOMPLETE: - // Get access to the document IDispatch interface - // Note: in the presence of frames, we would receive several of these events and would need - // to check that the IUnknown interfaces for This and browser_web_if are identical - // We may get a nil pointer if the base document fails to load - hr = browser_web_if->lpVtbl->get_Document(browser_web_if, &document_dispatch_if); - - if (document_dispatch_if) - { - // Retrieve IHTMLDocument2 interface - hr = document_dispatch_if->lpVtbl->QueryInterface(document_dispatch_if, &IID_IHTMLDocument2, &document_html2_if); - - // Retrieve IHTMLWindow2 interface - document_html2_if->lpVtbl->get_parentWindow(document_html2_if, &html_window2_if); - - // Set initial Cordova state and release application - set_native_ready(); - current_state = STATE_NATIVE_READY; - } - break; - - case DISPID_TITLECHANGE: - if (skip_title_update) - { - skip_title_update--; - break; - } - - // Update window caption - title = pDispParams->rgvarg[0].bstrVal; - SetWindowText(hWnd, title); - break; - - case DISPID_NAVIGATEERROR: - { - // Silently dismiss navigation errors for now - VARIANT_BOOL * cancel = pDispParams->rgvarg[0].pboolVal; - *cancel = VARIANT_TRUE; - } - return S_OK; - - default: - ; - } - - return S_OK; -} - -//------------------------------------------------------------------------------------------------- - -static IDispatchVtbl disp_vtable = -{ - Disp_QueryInterface, - Disp_AddRef, - Disp_Release, - Disp_GetTypeInfoCount, - Disp_GetTypeInfo, - Disp_GetIDsOfNames, - Disp_Invoke -}; - -//------------------------------------------------------------------------------------------------- - -static IDispatchVtbl ext_vtable = -{ - Ext_QueryInterface, - Ext_AddRef, - Ext_Release, - Ext_GetTypeInfoCount, - Ext_GetTypeInfo, - Ext_GetIDsOfNames, - Ext_Invoke -}; - -//------------------------------------------------------------------------------------------------- - -#define MAIN_WINDOW_CLASS L"Cordova Shell Window" -#define MAIN_WINDOW_NAME APP_NAME -#define MAIN_WINDOW_STYLE WS_OVERLAPPEDWINDOW - -//------------------------------------------------------------------------------------------------- - -static void call_js_script(BSTR wcs_as_bstr) -{ - VARIANT v; - - if (html_window2_if) - { - VariantInit(&v); - html_window2_if->lpVtbl->execScript(html_window2_if, wcs_as_bstr, javascript, &v); - SysFreeString(wcs_as_bstr); - } -} - - -void ProcessBackKeyStroke (void) -{ - // I there are listeners for back button down notifications - if (is_back_button_event_enabled()) - { - call_js_script(SysAllocString(L"cordova.fireDocumentEvent('backbutton');")); - } -} - -LRESULT CALLBACK CordovaShellWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - // WindowProc for the main host application window - - switch (uMsg) - { - case WM_KEYDOWN: - if (wParam == VK_BACK) - ProcessBackKeyStroke(); - break; - - case WM_CLOSE: - current_state = STATE_ENDING; // The window will get deactivated before being destroyed - // Do not bother sending "pause" event - // But send the "destroy" event - call_js_script(SysAllocString(L"cordova.require('cordova/channel').onDestroy.fire();")); - break; - - case WM_DESTROY: - PostQuitMessage(0); - return 0; - - case WM_SIZE: - if (browser_web_if && browser_web_if->lpVtbl) - { - browser_web_if->lpVtbl->put_Width(browser_web_if, LOWORD(lParam)); - browser_web_if->lpVtbl->put_Height(browser_web_if, HIWORD(lParam)); - } - - if (hCaptureWnd) - SetWindowPos(hCaptureWnd, 0, 0, 0, LOWORD(lParam), HIWORD(lParam), SWP_NOMOVE | SWP_NOZORDER); - return 0; - - case WM_DISPLAYCHANGE: - camera_notify_display_change(); - return 0; - - case WM_EXEC_JS_SCRIPT: - call_js_script((BSTR) lParam); - return 0; - - case WM_USER_ACCEL: - // New accelerometer sample available ; propagate to the JS side - propagate_accel_sample(); - return 0; - - case WM_USER_COMPASS: - // New compass sample available ; propagate to the JS side - propagate_compass_sample(); - return 0; - - case WM_PARENTNOTIFY: - // The capture window got destroyed, time to let the JS side know the outcome of the last requested service - if (LOWORD(wParam) == WM_DESTROY && (HWND) lParam == hCaptureWnd) - { - notify_capture_result(); - } - break; - - case WM_ACTIVATE: - if (LOWORD(wParam)) - { - // Window activated ; send resume event if in paused state - if (current_state == STATE_PAUSED) - { - invoke_js_routine(L"cordova.require('cordova/channel').onResume.fire();"); - current_state = STATE_NATIVE_READY; - } - } - else - { - // Window deactivated ; send pause event if we're in active state - if (current_state == STATE_NATIVE_READY) - { - invoke_js_routine(L"cordova.require('cordova/channel').onPause.fire();"); - current_state = STATE_PAUSED; - } - } - break; - - default: - return DefWindowProc(hWnd, uMsg, wParam, lParam); - } - - return DefWindowProc(hWnd, uMsg, wParam, lParam); -} - -//------------------------------------------------------------------------------------------------- - -LRESULT CALLBACK BrowserWndProcWrapper(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - if (uMsg == WM_KEYDOWN && wParam == VK_BACK) - ProcessBackKeyStroke(); - - return initial_browser_wnd_proc(hWnd, uMsg, wParam, lParam); -} - -//------------------------------------------------------------------------------------------------- - -void create_browser_object (void) -{ - HRESULT hr; - BSTR base_url; - VARIANT nil; - BSTR app_name; - IConnectionPointContainer* cp_container_if; - IConnectionPoint* cp_if; - - // Initialize client site object - browser_cs = &clsi; - browser_cs->lpVtbl = &clsi_vtable; - - // Initialize in place site object - browser_ips = &inplsi; - browser_ips->lpVtbl = &inplsi_vtable; - - // Initialize in place frame object - browser_ipf = &inplfr; - browser_ipf->lpVtbl = &inplfr_vtable; - - // Initialize event dispatcher object - browser_dsp = &disp; - browser_dsp->lpVtbl = &disp_vtable; - - // Initialize external interface dispatcher object - browser_ext = &ext; - browser_ext->lpVtbl = &ext_vtable; - - // Initialize host doc ui handler object - browser_dui = &duih; - browser_dui->lpVtbl = &duih_vtable; - - // Initialize OLE command target object - browser_oct = &oct; - browser_oct->lpVtbl = &oct_vtable; - - CoCreateInstance(&CLSID_WebBrowser, NULL, CLSCTX_INPROC_SERVER, &IID_IWebBrowser2, (void**)&browser_web_if); - - if (browser_web_if) - { - // Get IOleObject interface - browser_web_if->lpVtbl->QueryInterface(browser_web_if, &IID_IOleObject, &browser_ole_if); - - if (browser_ole_if) - { - app_name = SysAllocString(APP_NAME); - - hr = browser_ole_if->lpVtbl->SetClientSite(browser_ole_if, browser_cs); - hr = browser_ole_if->lpVtbl->SetHostNames(browser_ole_if, app_name, 0); - - // Activate object - hr = browser_ole_if->lpVtbl->DoVerb(browser_ole_if, OLEIVERB_INPLACEACTIVATE, 0, browser_cs, 0, hWnd, 0); - } - - // Also get a IOleInPlaceObject interface, as it's the expected way to resize the browser control - browser_web_if->lpVtbl->QueryInterface(browser_web_if, &IID_IOleInPlaceObject, &browser_ipo_if); - - // Connect an event sink to the browser so we can get notified when there's an update to the document title - - hr = browser_web_if->lpVtbl->QueryInterface(browser_web_if, &IID_IConnectionPointContainer, &cp_container_if); - hr = cp_container_if->lpVtbl->FindConnectionPoint(cp_container_if, &DIID_DWebBrowserEvents2, &cp_if); - hr = cp_if->lpVtbl->Advise(cp_if, (IUnknown*) browser_dsp, &browser_dsp_cookie); - - // Disable drag & drop on our window - hr = browser_web_if->lpVtbl->put_RegisterAsDropTarget(browser_web_if, VARIANT_FALSE); - - // Direct the browser to our index.html file - - base_url = SysAllocString(full_path); - VariantInit(&nil); - - hr = browser_web_if->lpVtbl->Navigate(browser_web_if, base_url, &nil, &nil, &nil, &nil); - - if (hr == S_OK) - // Display our HTML window - hr = browser_web_if->lpVtbl->put_Visible(browser_web_if, VARIANT_TRUE); - else - browser_web_if->lpVtbl->Quit(browser_web_if); - - SysFreeString(base_url); - - browser_web_if->lpVtbl->Release(browser_web_if); - } -} - -//------------------------------------------------------------------------------------------------- - -void set_ie_feature (wchar_t* key_name, DWORD new_val) -{ - wchar_t filename[_MAX_PATH]; - wchar_t* last_component; - DWORD info; - HKEY key; - LONG ret; - DWORD len; - DWORD val; - DWORD type; - - filename[0] = L'\0'; - - // First retrieve the current executable name - GetModuleFileName(0, filename, _MAX_PATH); - - last_component = wcsrchr(filename, L'\\'); - - if (last_component && *last_component == '\\') - last_component++; - else - return; - - - ret = RegCreateKeyEx(HKEY_CURRENT_USER, key_name, 0, 0, 0, KEY_READ | KEY_WRITE, 0, &key, &info); - - if (ret != ERROR_SUCCESS) - return; - - len = sizeof(DWORD); - - ret = RegQueryValueEx(key, last_component, 0, &type, (LPBYTE) &val, &len); - - // If no value exists for our exe name (e.g. it hasn't been explicitly enabled or disabled) - if (ret != ERROR_SUCCESS || type != REG_DWORD) - // Stick a value there named after our exe name - RegSetValueEx(key, last_component, 0, REG_DWORD, (LPBYTE) &new_val, sizeof(DWORD)); - - RegCloseKey(key); -} - -//------------------------------------------------------------------------------------------------- - -int get_ie_version (void) -{ - DWORD info; - HKEY key; - LONG ret; - DWORD len; - DWORD type; - wchar_t buf[20]; - int major; - - buf[0] = L'\0'; - - ret = RegCreateKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Internet Explorer" , 0, 0, 0, KEY_READ, 0, &key, &info); - - if (ret != ERROR_SUCCESS) - return -1; - - if (info == REG_OPENED_EXISTING_KEY) - { - len = sizeof(buf); - - ret = RegQueryValueEx(key, L"Version", 0, &type, (LPBYTE) buf, &len); - - if (ret == ERROR_SUCCESS) - { - major = _wtoi(buf); - RegCloseKey(key); - return major; - } - } - - RegCloseKey(key); - return -1; -} - -//------------------------------------------------------------------------------------------------- - -void early_init (void) -{ - DWORD major, minor; - INITCOMMONCONTROLSEX ccex; - DWORD winver = GetVersion(); - - major = (DWORD)(LOBYTE(LOWORD(winver))); - minor = (DWORD)(HIBYTE(LOWORD(winver))); - - // We need at least Windows Seven - if (major < 6 || (major == 6 && minor < 1)) - { - MessageBox(GetForegroundWindow(), L"This program requires Windows 7 or newer.", L"Missing Prerequisites", MB_OK); - ExitProcess(61); - } - - // IE 9 or newer required - if (get_ie_version() < 9) - { - MessageBox(GetForegroundWindow(), L"This program requires Internet Explorer 9 or newer", L"Missing Prerequisites", MB_OK); - ExitProcess(90); - } - - // Form full path for our base URL file ; better do this early, as the current directory can be changed later - GetFullPathName(BASE_URL, _MAX_PATH, full_path, 0); // Possible failure if the base directory has a very long name - - - // A little BSTR object that we'll need to invoke js routines - javascript = SysAllocString(L"javascript"); - - // IE GPU acceleration is disabled by default for apps hosting the HTML control - set_ie_feature(IE_GPU_REG_KEY, 1); - - // Disable pre-IE9 emulation - set_ie_feature(IE_COMPAT_REG_KEY, 9999); - - // We need both COM (sensor API, etc) and OLE (WebBrowser control) services - if (!SUCCEEDED(OleInitialize(0))) - ExitProcess(0x01e); - - // Ensure the common controls library is setup to allow toolbar creation - ccex.dwSize = sizeof(INITCOMMONCONTROLSEX); - ccex.dwICC = ICC_BAR_CLASSES; - InitCommonControlsEx(&ccex); -} - -//------------------------------------------------------------------------------------------------- - -int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) -{ - MSG msg; - int code; - WNDCLASSEX wc = { - sizeof(WNDCLASSEX), - CS_HREDRAW | CS_VREDRAW, - CordovaShellWndProc, - 0, - 0, - 0, - 0, // >>> icon - LoadCursor(NULL, IDC_ARROW), - 0, // must handle background paint - 0, - MAIN_WINDOW_CLASS, - 0 // >>> small icon update - }; - - set_thread_name(-1, "Primary Thread"); - - early_init(); - register_cordova_modules(); - - RegisterClassEx(&wc); - - hWnd = CreateWindow(MAIN_WINDOW_CLASS, MAIN_WINDOW_NAME, MAIN_WINDOW_STYLE, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, 0, 0); - - if (!hWnd) - return 0; - - create_browser_object(); - - ShowWindow(hWnd, nCmdShow); - UpdateWindow(hWnd); - - setup_capture(); - - while ((code = GetMessage( &msg, 0, 0, 0 )) != 0) - { - if (code == -1) - { - } - else - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - } - - close_cordova_modules(); - OleUninitialize(); - - return msg.wParam; -} - - -// http://msdn.microsoft.com/en-us/ie/aa740471 for IE9 headers & libs -// $(ProgramFiles)\Microsoft SDKs\Internet Explorer\v9\include -// http://msdn.microsoft.com/en-us/library/ie/bb508516%28v=vs.85%29.aspx for MSHTML usage notes -// http://support.microsoft.com/kb/261003/en-us for error handling - http://git-wip-us.apache.org/repos/asf/incubator-cordova-windows/blob/3711f4bc/Cordova/shell.h ---------------------------------------------------------------------- diff --git a/Cordova/shell.h b/Cordova/shell.h deleted file mode 100644 index e463f67..0000000 --- a/Cordova/shell.h +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2012 Intel Corporation -// -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -#ifndef __SHELL_H__ -#define __SHELL_H__ - -#include -#include - -#define NULL_MESSAGE L"null" - -typedef enum { - CB_NO_RESULT = 0, - CB_OK = 1, - CB_CLASS_NOT_FOUND_EXCEPTION = 2, - CB_ILLEGAL_ACCESS_EXCEPTION = 3, - CB_INSTANTIATION_EXCEPTION = 4, - CB_MALFORMED_URL_EXCEPTION = 5, - CB_IO_EXCEPTION = 6, - CB_INVALID_ACTION = 7, - CB_JSON_EXCEPTION = 8, - CB_GENERIC_ERROR = 9 -} CallbackStatus; - -typedef HRESULT (*module_exec_func) (BSTR callback_id, BSTR action, BSTR args, VARIANT *result); -typedef void (*module_close_func) (void); -typedef void (*module_init_func) (void); - -struct _CordovaModule { - BSTR module_id; - module_exec_func exec; - module_init_func init; - module_close_func close; - struct _CordovaModule *next; -}; -typedef struct _CordovaModule CordovaModule; - -#define CORDOVA_MODULE(name) &Cordova##name -#define DECLARE_CORDOVA_MODULE(name) extern CordovaModule Cordova##name; -#define DEFINE_CORDOVA_MODULE(name, id, exec_func, init_func, close_func) CordovaModule Cordova##name = { id, exec_func, init_func, close_func, NULL }; - -void cordova_success_callback(BSTR callback_id, BOOL keep_callback, const wchar_t *message); -void cordova_fail_callback(BSTR callback_id, BOOL keep_callback, CallbackStatus status, const wchar_t *message); - -#endif http://git-wip-us.apache.org/repos/asf/incubator-cordova-windows/blob/3711f4bc/Cordova/storage.c ---------------------------------------------------------------------- diff --git a/Cordova/storage.c b/Cordova/storage.c deleted file mode 100644 index f723132..0000000 --- a/Cordova/storage.c +++ /dev/null @@ -1,384 +0,0 @@ -// Copyright 2012 Intel Corporation -// -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -#define WIN32_LEAN_AND_MEAN -#include -#include -#include -#include -#define CINTERFACE 1 // Get C definitions for COM header files - -#include "lib/sqlite/sqlite3.h" -#include "storage.h" -#include "json.h" -#include "common.h" - -#define DROP_QUERY L"drop" -#define ALTER_QUERY L"alter" -#define CREATE_QUERY L"create" -#define TRUNCATE_QUERY L"truncate" - -struct _CordovaDb { - sqlite3 *db; - wchar_t *name; - struct _CordovaDb *next; -}; -typedef struct _CordovaDb CordovaDb; - -static CordovaDb *db_list = NULL; - -static CordovaDb *find_cordova_db(const wchar_t *name) -{ - CordovaDb *item = db_list; - - while (item != NULL) { - if (!wcscmp(name, item->name)) - return item; - - item = item->next; - } - - return NULL; -} - -static void remove_cordova_db(CordovaDb *db) -{ - CordovaDb *item; - - if (db_list == db) - db_list = NULL; - else { - item = db_list; - while (item) { - if (item->next == db) { - item->next = db->next; - break; - } - - item = item->next; - } - } - - sqlite3_close(db->db); - free(db->name); - free(db); -} - -static HRESULT remove_database(BSTR callback_id, BSTR args) -{ - wchar_t path[MAX_PATH]; - CordovaDb *cordova_db; - JsonArray array; - JsonItem item; - wchar_t *db_name = NULL; - - if (db_list == NULL) - goto out; - - // Extract db name - if (!json_parse_and_validate_args(args, &array, JSON_VALUE_STRING, - JSON_VALUE_INVALID)) { - json_free_args(array); - return E_FAIL; - } - item = json_array_get_first(array); - - if (json_get_value_type(item) != JSON_VALUE_STRING) { - json_free_args(array); - return E_FAIL; - } - db_name = json_get_string_value(item); - json_free_args(array); - - // Find & remove - cordova_db = find_cordova_db(db_name); - if (cordova_db) { - remove_cordova_db(cordova_db); - - if(!SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, path))) - goto out; - PathAppend(path, L"Cordova\\db"); - PathAppend(path, db_name); - - DeleteFile(path); - } - -out: - if (db_name) - free(db_name); - - return S_OK; -} - -static HRESULT open_database(BSTR callback_id, BSTR args, VARIANT *result) -{ - int res; - wchar_t path[MAX_PATH]; - sqlite3 *db; - CordovaDb *cordova_db; - JsonArray array; - JsonItem item; - wchar_t *db_name; - - if(!SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, path))) - return E_FAIL; - - PathAppend(path, L"Cordova\\db"); - res = SHCreateDirectory(NULL,path); - if(!SUCCEEDED(res) && (res != ERROR_FILE_EXISTS) && (res != ERROR_ALREADY_EXISTS)) - return E_FAIL; - - // Validate array contents - if (!json_parse_and_validate_args(args, &array, JSON_VALUE_STRING, - JSON_VALUE_STRING, - JSON_VALUE_STRING, - JSON_VALUE_INT, - JSON_VALUE_INVALID)) { - json_free_args(array); - return E_FAIL; - } - item = json_array_get_first(array); - - db_name = json_get_string_value(item); - json_free_args(array); - - cordova_db = find_cordova_db(db_name); - if (cordova_db != NULL) - db = cordova_db->db; - else { - PathAppend(path, db_name); - res = sqlite3_open16((const char *) path, &db); - if (res != SQLITE_OK) { - sqlite3_close(db); - free (db_name); - return E_FAIL; - } - - cordova_db = (CordovaDb *)calloc(1, sizeof(CordovaDb)); - cordova_db->db = db; - cordova_db->name = db_name; - cordova_db->next = db_list; - - db_list = cordova_db; - } - - VariantInit(result); - result->vt = VT_INT; - result->intVal = (int) db; - - return S_OK; -} - -static BOOL is_ddl(const wchar_t *query) -{ - if (!_wcsnicmp(query, DROP_QUERY, wcslen(DROP_QUERY)) || - !_wcsnicmp(query, ALTER_QUERY, wcslen(ALTER_QUERY)) || - !_wcsnicmp(query, CREATE_QUERY, wcslen(CREATE_QUERY)) || - !_wcsnicmp(query, TRUNCATE_QUERY, wcslen(TRUNCATE_QUERY))) - return TRUE; - - return FALSE; -} - -static HRESULT execute_sql(BSTR callback_id, BSTR args) -{ - HRESULT res = S_OK; - sqlite3 *db; - sqlite3_stmt *stmt = NULL; - JsonArray array; - JsonItem item; - TextBuf response; - wchar_t *tx_id = NULL; - wchar_t *command = NULL; - - response = text_buf_new(); - - // Validate array contents - if (!json_parse_and_validate_args(args, &array, JSON_VALUE_INT, - JSON_VALUE_STRING, - JSON_VALUE_ARRAY, - JSON_VALUE_STRING, - JSON_VALUE_INVALID)) { - res = E_FAIL; - goto out; - } - - item = json_array_item_at(array, 3); - tx_id = json_get_string_value(item); - - item = json_array_get_first(array); - db = (sqlite3 *) json_get_int_value(item); - - item = json_array_get_next(item); - command = json_get_string_value(item); - - if (is_ddl(command)) { - if (sqlite3_prepare16_v2(db, command, wcslen(command) * sizeof(wchar_t), &stmt, NULL) != SQLITE_OK) { - cordova_fail_callback(callback_id, FALSE, CB_GENERIC_ERROR, L"{code:SQLError.SYNTAX_ERR,message:\"Syntax error\"}"); - goto out; - } - if (sqlite3_step(stmt) != SQLITE_DONE) { - cordova_fail_callback(callback_id, FALSE, CB_GENERIC_ERROR, L"{code:SQLError.DATABASE_ERR,message:\"Database error\"}"); - goto out; - } - - text_buf_append(response, L"{id:'"); - text_buf_append(response, tx_id); - text_buf_append(response, L"',data:''}"); - - cordova_success_callback(callback_id, FALSE, text_buf_get(response)); - } else { - JsonItem sql_arg; - int db_res = SQLITE_OK; - int index = 1; - - // Prepare - if (sqlite3_prepare16_v2(db, command, wcslen(command) * sizeof(wchar_t), &stmt, NULL) != SQLITE_OK) { - cordova_fail_callback(callback_id, FALSE, CB_GENERIC_ERROR, L"{code:SQLError.SYNTAX_ERR,message:\"Syntax error\"}"); - goto out; - } - - // Bind arguments - item = json_array_get_next(item); - sql_arg = json_get_array_value(item); - while (sql_arg != NULL) { - switch (json_get_value_type(sql_arg)) { - case JSON_VALUE_EMPTY: - break; - case JSON_VALUE_INT: - db_res = sqlite3_bind_int(stmt, index, json_get_int_value(sql_arg)); - break; - case JSON_VALUE_DOUBLE: - db_res = sqlite3_bind_double(stmt, index, json_get_double_value(sql_arg)); - break; - case JSON_VALUE_STRING: - { - wchar_t *str = json_get_string_value(sql_arg); - db_res = sqlite3_bind_text16(stmt, index, str, wcslen(str) * sizeof(wchar_t), NULL); - free(str); - break; - } - case JSON_VALUE_NULL: - db_res = sqlite3_bind_null(stmt, index); - break; - default: - cordova_fail_callback(callback_id, FALSE, CB_GENERIC_ERROR, L"{code:SQLError.SYNTAX_ERR,message:\"Syntax error\"}"); - goto out; - } - if (db_res != SQLITE_OK) { - cordova_fail_callback(callback_id, FALSE, CB_GENERIC_ERROR,L"{code:SQLError.SYNTAX_ERR,message:\"Syntax error\"}"); - goto out; - } - - sql_arg = json_array_get_next(sql_arg); - index++; - } - - // Execute & prepare response - text_buf_append(response, L"{id:'"); - text_buf_append(response, tx_id); - text_buf_append(response, L"',data:["); - - db_res = sqlite3_step(stmt); - if (db_res == SQLITE_ROW) { - do { - int j; - - text_buf_append(response, L"{"); - for (j = 0; j < sqlite3_column_count(stmt); j++) { - if (j > 0) - text_buf_append(response, L","); - - text_buf_append(response, L"\""); - text_buf_append(response, (wchar_t *) sqlite3_column_name16(stmt, j)); - text_buf_append(response, L"\":"); - if (sqlite3_column_type(stmt, j) == SQLITE_INTEGER) { - static wchar_t number[20]; - swprintf(number, 19, L"%d", sqlite3_column_int(stmt, j)); - text_buf_append(response, number); - } else if (sqlite3_column_type(stmt, j) == SQLITE_TEXT) { - text_buf_append(response, L"\""); - text_buf_append(response, (wchar_t *) sqlite3_column_text16(stmt, j)); - text_buf_append(response, L"\""); - } else if (sqlite3_column_type(stmt, j) == SQLITE_NULL) { - text_buf_append(response, L"null"); - } else { - cordova_fail_callback(callback_id, FALSE, CB_GENERIC_ERROR, L"{code:SQLError.DATABASE_ERR,message:\"Database error\"}"); - goto out; - } - } - text_buf_append(response, L"}"); - - // Next - db_res = sqlite3_step(stmt); - if (db_res == SQLITE_ROW) - text_buf_append(response, L","); - } while (db_res == SQLITE_ROW); - } else if (db_res != SQLITE_DONE) { - cordova_fail_callback(callback_id, FALSE, CB_GENERIC_ERROR, L"{code:SQLError.DATABASE_ERR,message:\"Database error\"}"); - goto out; - } - - text_buf_append(response, L"]}"); - - // Success - cordova_success_callback(callback_id, FALSE, text_buf_get(response)); - } - -out: - json_free_args(array); - if (stmt) - sqlite3_finalize(stmt); - text_buf_free(response); - if (tx_id) - free(tx_id); - if (command) - free(command); - - return res; -} - -HRESULT storage_exec(BSTR callback_id, BSTR action, BSTR args, VARIANT *result) -{ - if (!wcscmp(action, L"openDatabase")) - return open_database(callback_id, args, result); - if (!wcscmp(action, L"removeDatabase")) - return remove_database(callback_id, args); - if (!wcscmp(action, L"executeSql")) - return execute_sql(callback_id, args); - - return DISP_E_MEMBERNOTFOUND; -} - -void storage_close(void) -{ - while (db_list != NULL) { - CordovaDb *item; - - sqlite3_close(db_list->db); - free(db_list->name); - - item = db_list; - db_list = db_list->next; - - free(item); - } -} - -DEFINE_CORDOVA_MODULE(Storage, L"Storage", storage_exec, NULL, storage_close) \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cordova-windows/blob/3711f4bc/Cordova/storage.h ---------------------------------------------------------------------- diff --git a/Cordova/storage.h b/Cordova/storage.h deleted file mode 100644 index 311092f..0000000 --- a/Cordova/storage.h +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2012 Intel Corporation -// -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -#include "shell.h" - -DECLARE_CORDOVA_MODULE(Storage) \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cordova-windows/blob/3711f4bc/Cordova/toolbar.bmp ---------------------------------------------------------------------- diff --git a/Cordova/toolbar.bmp b/Cordova/toolbar.bmp deleted file mode 100644 index 1c3965f..0000000 Binary files a/Cordova/toolbar.bmp and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-cordova-windows/blob/3711f4bc/Cordova/www/accel_game.css ---------------------------------------------------------------------- diff --git a/Cordova/www/accel_game.css b/Cordova/www/accel_game.css deleted file mode 100644 index e6672fd..0000000 --- a/Cordova/www/accel_game.css +++ /dev/null @@ -1,23 +0,0 @@ -body{ -background-color:#000; -} - -#box{ -width: 500px; -height: 500px; -border: 1px solid #333; -margin: 0 auto; -background: #FFF; -text-align: center; -} - -h1 { -text-align: center; -font-variant: small-caps; -color: #FFF; -} - -#valueX, #valueY, #valueZ, #valueL, #valueR,#valueU,#valueD { -font-variant: small-caps; -color: #FFF; -} http://git-wip-us.apache.org/repos/asf/incubator-cordova-windows/blob/3711f4bc/Cordova/www/accel_game.html ---------------------------------------------------------------------- diff --git a/Cordova/www/accel_game.html b/Cordova/www/accel_game.html deleted file mode 100644 index e11fa7b..0000000 --- a/Cordova/www/accel_game.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - Accelerometer Game - - - - - -

Accelerometer Game

- -
- - HTML Canvas unsupported! - -
- -
-
-
- -
-
-
-
- -