diff --git a/browser/base/content/test/browser_save_video.js b/browser/base/content/test/browser_save_video.js index 4e892fbe1c1..14b7f84f618 100644 --- a/browser/base/content/test/browser_save_video.js +++ b/browser/base/content/test/browser_save_video.js @@ -2,7 +2,7 @@ http://creativecommons.org/publicdomain/zero/1.0/ */ var MockFilePicker = SpecialPowers.MockFilePicker; -MockFilePicker.reset(); +MockFilePicker.init(); /** * TestCase for bug 564387 @@ -54,7 +54,7 @@ function test() { registerCleanupFunction(function () { mockTransferRegisterer.unregister(); - MockFilePicker.reset(); + MockFilePicker.cleanup(); destDir.remove(true); }); diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in index 9d06c90abb0..cef190fed00 100644 --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in @@ -14,7 +14,6 @@ ; Mac bundle stuff @APPNAME@/Contents/Info.plist @APPNAME@/Contents/PkgInfo -@APPNAME@/Contents/Plug-Ins/ @APPNAME@/Contents/Resources/ #endif diff --git a/config/rules.mk b/config/rules.mk index ab0b8542744..6efc99a15f4 100644 --- a/config/rules.mk +++ b/config/rules.mk @@ -373,6 +373,13 @@ ifdef MAPFILE OS_LDFLAGS += -MAP:$(MAPFILE) endif +else #!GNU_CC + +ifdef DEFFILE +OS_LDFLAGS += $(call normalizepath,$(DEFFILE)) +EXTRA_DEPS += $(DEFFILE) +endif + endif # !GNU_CC endif # WINNT diff --git a/content/html/content/test/test_bug500885.html b/content/html/content/test/test_bug500885.html index 5361c24da5d..0d9f36aa982 100644 --- a/content/html/content/test/test_bug500885.html +++ b/content/html/content/test/test_bug500885.html @@ -18,7 +18,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=500885 + + + + + + + + + +
 
 
 
+ + diff --git a/layout/reftests/bugs/712849-1-ref.html b/layout/reftests/bugs/712849-1-ref.html new file mode 100644 index 00000000000..5c9c909f280 --- /dev/null +++ b/layout/reftests/bugs/712849-1-ref.html @@ -0,0 +1,31 @@ + + + + testcase + + + + + + + + +
 
 
 
 
+ + diff --git a/layout/reftests/bugs/712849-1.html b/layout/reftests/bugs/712849-1.html new file mode 100644 index 00000000000..83b4c434059 --- /dev/null +++ b/layout/reftests/bugs/712849-1.html @@ -0,0 +1,39 @@ + + + + testcase + + + + + + + + + +
 
 
 
 
+ + diff --git a/layout/reftests/bugs/reftest.list b/layout/reftests/bugs/reftest.list index bfe29a1a33a..e132e5e833d 100644 --- a/layout/reftests/bugs/reftest.list +++ b/layout/reftests/bugs/reftest.list @@ -1445,6 +1445,7 @@ random-if(d2d) == 523468-1.html 523468-1-ref.html == 528096-1.html 528096-1-ref.html == 530686-1.html 530686-1-ref.html == 531098-1.html 531098-1-ref.html +== 531200-1.html 531200-1-ref.html == 531371-1.html 531371-1-ref.html == 534526-1a.html 534526-1-ref.html == 534526-1b.html 534526-1-ref.html @@ -1677,3 +1678,5 @@ fails-if(layersGPUAccelerated&&cocoaWidget) == 654950-1.html 654950-1-ref.html # needs-focus == 703186-1.html 703186-1-ref.html needs-focus == 703186-2.html 703186-2-ref.html needs-focus != 703186-1.html 703186-2.html +== 711359-1.html 711359-1-ref.html +== 712849-1.html 712849-1-ref.html diff --git a/layout/reftests/svg/sizing/dynamic--inline-resize-cb-height.xhtml b/layout/reftests/svg/sizing/dynamic--inline-resize-cb-height.xhtml deleted file mode 100644 index bea695f6afa..00000000000 --- a/layout/reftests/svg/sizing/dynamic--inline-resize-cb-height.xhtml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - Test: resize of container block height - - - - - - - - -
- - - -
- - - diff --git a/layout/reftests/svg/sizing/dynamic--inline-resize-cb-width.xhtml b/layout/reftests/svg/sizing/dynamic--inline-resize-cb-width.xhtml deleted file mode 100644 index 1d0ff495b85..00000000000 --- a/layout/reftests/svg/sizing/dynamic--inline-resize-cb-width.xhtml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - Test: resize of container block width - - - - - - - - -
- - - -
- - - diff --git a/layout/reftests/svg/sizing/reftest.list b/layout/reftests/svg/sizing/reftest.list index 40016067607..0ebf116bc6d 100644 --- a/layout/reftests/svg/sizing/reftest.list +++ b/layout/reftests/svg/sizing/reftest.list @@ -303,10 +303,6 @@ random-if(Android) == object--auto-auto--px-px.html object--auto-auto--px == dynamic--inline-css-height.xhtml pass.svg == dynamic--inline-css-width.xhtml pass.svg -# These two don't have a whole lot of point anymore now that the meaning -# of percentages has changed. -== dynamic--inline-resize-cb-height.xhtml standalone-sanity-height-150px.svg -== dynamic--inline-resize-cb-width.xhtml standalone-sanity-width-300px.svg skip == dynamic--inline-resize-window-height.xhtml pass.svg # XXX breaks the reftest run as the window height somehow is not restored skip == dynamic--inline-resize-window-width.xhtml pass.svg # Fails way too much fails random-if(Android) == dynamic--object-svg-unloaded.xhtml pass.svg diff --git a/layout/style/viewsource.css b/layout/style/viewsource.css index 72ee55861b9..0483c766f8d 100644 --- a/layout/style/viewsource.css +++ b/layout/style/viewsource.css @@ -21,6 +21,7 @@ * * Contributor(s): * Blake Ross + * Geoff Lankow * * Alternatively, the contents of this file may be used under the terms of * either of the GNU General Public License Version 2 or later (the "GPL"), @@ -47,6 +48,7 @@ font-family: -moz-fixed; font-weight: normal; white-space: pre; + counter-reset: line; } #viewsource.wrap { white-space: pre-wrap; @@ -56,7 +58,20 @@ pre { font: inherit; color: inherit; white-space: inherit; - margin: 0; + margin: 0 0 0 5ch; +} +pre[id]:before, +span[id]:before { + content: counter(line) " "; + counter-increment: line; + -moz-user-select: none; + display: inline-block; + width: 5ch; + margin: 0 0 0 -5ch; + text-align: right; + color: #ccc; + font-weight: normal; + font-style: normal; } .start-tag { color: purple; diff --git a/layout/svg/crashtests/crashtests.list b/layout/svg/crashtests/crashtests.list index 34a81991a03..7b7c6f76dc7 100644 --- a/layout/svg/crashtests/crashtests.list +++ b/layout/svg/crashtests/crashtests.list @@ -59,7 +59,7 @@ load 385552-2.svg load 385840-1.svg load 385852-1.svg load 386475-1.xhtml -load 386566-1.svg +asserts(1) load 386566-1.svg # Bug 713626 load 386690-1.svg load 387290-1.svg load 402408-1.svg diff --git a/layout/tables/nsCellMap.cpp b/layout/tables/nsCellMap.cpp index b95b7e807d9..9362fb21957 100644 --- a/layout/tables/nsCellMap.cpp +++ b/layout/tables/nsCellMap.cpp @@ -1860,8 +1860,11 @@ nsCellMap::ExpandWithRows(nsTableCellMap& aMap, } newRowIndex++; } - SetDamageArea(0, aRgFirstRowIndex + startRowIndex, aMap.GetColCount(), - 1 + endRowIndex - startRowIndex, aDamageArea); + // mark all following rows damaged, they might contain a previously set + // damage area which we can not shift. + PRInt32 firstDamagedRow = aRgFirstRowIndex + startRowIndex; + SetDamageArea(0, firstDamagedRow, aMap.GetColCount(), + aMap.GetRowCount() - firstDamagedRow, aDamageArea); } void nsCellMap::ExpandWithCells(nsTableCellMap& aMap, @@ -2028,8 +2031,11 @@ void nsCellMap::ShrinkWithoutRows(nsTableCellMap& aMap, mContentRowCount--; } aMap.RemoveColsAtEnd(); - SetDamageArea(0, aRgFirstRowIndex + aStartRowIndex, aMap.GetColCount(), 0, - aDamageArea); + // mark all following rows damaged, they might contain a previously set + // damage area which we can not shift. + PRInt32 firstDamagedRow = aRgFirstRowIndex + aStartRowIndex; + SetDamageArea(0, firstDamagedRow, aMap.GetColCount(), + aMap.GetRowCount() - firstDamagedRow, aDamageArea); } PRInt32 nsCellMap::GetColSpanForNewCell(nsTableCellFrame& aCellFrameToAdd, diff --git a/layout/tables/nsTableRowFrame.cpp b/layout/tables/nsTableRowFrame.cpp index 6835b1d968c..eeb0b012269 100644 --- a/layout/tables/nsTableRowFrame.cpp +++ b/layout/tables/nsTableRowFrame.cpp @@ -206,20 +206,14 @@ nsTableRowFrame::AppendFrames(ChildListID aListID, { NS_ASSERTION(aListID == kPrincipalList, "unexpected child list"); - // Append the frames - // XXXbz why do we append here first, then append to table, while - // for InsertFrames we do it in the other order? Bug 507419 covers this. const nsFrameList::Slice& newCells = mFrames.AppendFrames(nsnull, aFrameList); // Add the new cell frames to the table nsTableFrame *tableFrame = nsTableFrame::GetTableFrame(this); for (nsFrameList::Enumerator e(newCells) ; !e.AtEnd(); e.Next()) { - nsTableCellFrame *cellFrame = do_QueryFrame(e.get()); - NS_ASSERTION(cellFrame, "Unexpected frame"); - if (cellFrame) { - // Add the cell to the cell map - tableFrame->AppendCell(*cellFrame, GetRowIndex()); - } + nsIFrame *childFrame = e.get(); + NS_ASSERTION(IS_TABLE_CELL(childFrame->GetType()),"Not a table cell frame/pseudo frame construction failure"); + tableFrame->AppendCell(static_cast(*childFrame), GetRowIndex()); } PresContext()->PresShell()->FrameNeedsReflow(this, nsIPresShell::eTreeChange, @@ -238,22 +232,19 @@ nsTableRowFrame::InsertFrames(ChildListID aListID, NS_ASSERTION(aListID == kPrincipalList, "unexpected child list"); NS_ASSERTION(!aPrevFrame || aPrevFrame->GetParent() == this, "inserting after sibling frame with different parent"); + //Insert Frames in the frame list + const nsFrameList::Slice& newCells = mFrames.InsertFrames(nsnull, aPrevFrame, aFrameList); // Get the table frame nsTableFrame* tableFrame = nsTableFrame::GetTableFrame(this); - // gather the new frames (only those which are cells) into an array - // XXXbz there shouldn't be any other ones here... can we just put - // them all in the array and not do all this QI nonsense? nsIAtom* cellFrameType = (tableFrame->IsBorderCollapse()) ? nsGkAtoms::bcTableCellFrame : nsGkAtoms::tableCellFrame; nsTableCellFrame* prevCellFrame = (nsTableCellFrame *)nsTableFrame::GetFrameAtOrBefore(this, aPrevFrame, cellFrameType); nsTArray cellChildren; - for (nsFrameList::Enumerator e(aFrameList); !e.AtEnd(); e.Next()) { - nsTableCellFrame *cellFrame = do_QueryFrame(e.get()); - NS_ASSERTION(cellFrame, "Unexpected frame"); - if (cellFrame) { - cellChildren.AppendElement(cellFrame); - } + for (nsFrameList::Enumerator e(newCells); !e.AtEnd(); e.Next()) { + nsIFrame *childFrame = e.get(); + NS_ASSERTION(IS_TABLE_CELL(childFrame->GetType()),"Not a table cell frame/pseudo frame construction failure"); + cellChildren.AppendElement(static_cast(childFrame)); } // insert the cells into the cell map PRInt32 colIndex = -1; @@ -261,9 +252,6 @@ nsTableRowFrame::InsertFrames(ChildListID aListID, prevCellFrame->GetColIndex(colIndex); } tableFrame->InsertCells(cellChildren, GetRowIndex(), colIndex); - - // Insert the frames in the frame list - mFrames.InsertFrames(nsnull, aPrevFrame, aFrameList); PresContext()->PresShell()->FrameNeedsReflow(this, nsIPresShell::eTreeChange, NS_FRAME_HAS_DIRTY_CHILDREN); diff --git a/layout/tables/nsTableRowGroupFrame.cpp b/layout/tables/nsTableRowGroupFrame.cpp index 1e6333703cf..a1638f304fb 100644 --- a/layout/tables/nsTableRowGroupFrame.cpp +++ b/layout/tables/nsTableRowGroupFrame.cpp @@ -955,6 +955,7 @@ nsTableRowGroupFrame::SplitSpanningCells(nsPresContext& aPresContext, static_cast(aTable.GetFirstInFlow())->IsBorderCollapse(); PRInt32 lastRowIndex = aLastRow.GetRowIndex(); bool wasLast = false; + bool haveRowSpan = false; // Iterate the rows between aFirstRow and aLastRow for (nsTableRowFrame* row = &aFirstRow; !wasLast; row = row->GetNextRow()) { wasLast = (row == &aLastRow); @@ -966,6 +967,7 @@ nsTableRowGroupFrame::SplitSpanningCells(nsPresContext& aPresContext, // Only reflow rowspan > 1 cells which span aLastRow. Those which don't span aLastRow // were reflowed correctly during the unconstrained height reflow. if ((rowSpan > 1) && (rowIndex + rowSpan > lastRowIndex)) { + haveRowSpan = true; nsReflowStatus status; // Ask the row to reflow the cell to the height of all the rows it spans up through aLastRow // aAvailHeight is the space between the row group start and the end of the page @@ -1021,6 +1023,9 @@ nsTableRowGroupFrame::SplitSpanningCells(nsPresContext& aPresContext, } } } + if (!haveRowSpan) { + aDesiredHeight = aLastRow.GetRect().YMost(); + } } // Remove the next-in-flow of the row, its cells and their cell blocks. This diff --git a/memory/mozutils/mozutils.def.in b/memory/mozutils/mozutils.def.in index 3bbc3bf09ee..63cd6dc952a 100644 --- a/memory/mozutils/mozutils.def.in +++ b/memory/mozutils/mozutils.def.in @@ -1,4 +1,4 @@ -; ***** BEGIN LICENSE BLOCK ***** +; ***** BEGIN LICENSE BLOCK ***** ; Version: MPL 1.1/GPL 2.0/LGPL 2.1 ; ; The contents of this file are subject to the Mozilla Public License Version diff --git a/mobile/android/base/AwesomeBar.java b/mobile/android/base/AwesomeBar.java index 6bfae373fa9..3b221bd5c52 100644 --- a/mobile/android/base/AwesomeBar.java +++ b/mobile/android/base/AwesomeBar.java @@ -68,10 +68,13 @@ import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.Button; import android.widget.EditText; +import android.widget.ExpandableListView; import android.widget.ImageButton; import android.widget.RelativeLayout; import android.widget.ListView; +import java.util.Map; + import org.mozilla.gecko.db.BrowserDB.URLColumns; import org.mozilla.gecko.db.BrowserDB; @@ -386,48 +389,75 @@ public class AwesomeBar extends Activity implements GeckoEventListener { GeckoAppShell.unregisterGeckoEventListener("SearchEngines:Data", this); } - private Cursor mContextMenuCursor = null; + private Object mContextMenuSubject = null; @Override public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, view, menuInfo); - - AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo; ListView list = (ListView) view; - Object selecteditem = list.getItemAtPosition(info.position); + Object selectedItem = null; + String title = ""; - if (!(selecteditem instanceof Cursor)) { - mContextMenuCursor = null; + if (view == (ListView)findViewById(R.id.history_list)) { + ExpandableListView.ExpandableListContextMenuInfo info = (ExpandableListView.ExpandableListContextMenuInfo) menuInfo; + ExpandableListView exList = (ExpandableListView)list; + int childPosition = exList.getPackedPositionChild(info.packedPosition); + int groupPosition = exList.getPackedPositionGroup(info.packedPosition); + selectedItem = exList.getExpandableListAdapter().getChild(groupPosition, childPosition); + + Map map = (Map)selectedItem; + title = (String)map.get(URLColumns.TITLE); + } else { + AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo; + selectedItem = list.getItemAtPosition(info.position); + + Cursor cursor = (Cursor)selectedItem; + title = cursor.getString(cursor.getColumnIndexOrThrow(URLColumns.TITLE)); + } + + if (selectedItem == null || !((selectedItem instanceof Cursor) || (selectedItem instanceof Map))) { + mContextMenuSubject = null; return; } - mContextMenuCursor = (Cursor) selecteditem; + mContextMenuSubject = selectedItem; MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.awesomebar_contextmenu, menu); - String title = mContextMenuCursor.getString(mContextMenuCursor.getColumnIndexOrThrow(URLColumns.TITLE)); menu.setHeaderTitle(title); } @Override public boolean onContextItemSelected(MenuItem item) { - if (mContextMenuCursor == null) + if (mContextMenuSubject == null) return false; - AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); + String url = ""; + byte[] b = null; + String title = ""; + if (mContextMenuSubject instanceof Cursor) { + Cursor cursor = (Cursor)mContextMenuSubject; + url = cursor.getString(cursor.getColumnIndexOrThrow(URLColumns.URL)); + b = (byte[]) cursor.getBlob(cursor.getColumnIndexOrThrow(URLColumns.FAVICON)); + title = cursor.getString(cursor.getColumnIndexOrThrow(URLColumns.TITLE)); + } else if (mContextMenuSubject instanceof Map) { + Map map = (Map)mContextMenuSubject; + url = (String)map.get(URLColumns.URL); + b = (byte[]) map.get(URLColumns.FAVICON); + title = (String)map.get(URLColumns.TITLE); + } else { + return false; + } + + mContextMenuSubject = null; switch (item.getItemId()) { case R.id.open_new_tab: { - String url = mContextMenuCursor.getString(mContextMenuCursor.getColumnIndexOrThrow(URLColumns.URL)); GeckoApp.mAppContext.loadUrl(url, AwesomeBar.Type.ADD); break; } case R.id.add_to_launcher: { - String url = mContextMenuCursor.getString(mContextMenuCursor.getColumnIndexOrThrow(URLColumns.URL)); - byte[] b = (byte[]) mContextMenuCursor.getBlob(mContextMenuCursor.getColumnIndexOrThrow(URLColumns.FAVICON)); - String title = mContextMenuCursor.getString(mContextMenuCursor.getColumnIndexOrThrow(URLColumns.TITLE)); - Bitmap bitmap = null; if (b != null) bitmap = BitmapFactory.decodeByteArray(b, 0, b.length); @@ -436,18 +466,14 @@ public class AwesomeBar extends Activity implements GeckoEventListener { break; } case R.id.share: { - String url = mContextMenuCursor.getString(mContextMenuCursor.getColumnIndexOrThrow(URLColumns.URL)); - String title = mContextMenuCursor.getString(mContextMenuCursor.getColumnIndexOrThrow(URLColumns.TITLE)); GeckoAppShell.openUriExternal(url, "text/plain", "", "", Intent.ACTION_SEND, title); break; } default: { - mContextMenuCursor = null; return super.onContextItemSelected(item); } } - mContextMenuCursor = null; return true; } diff --git a/mobile/android/base/GeckoPreferences.java b/mobile/android/base/GeckoPreferences.java index 6f815a60e45..b772003c47d 100644 --- a/mobile/android/base/GeckoPreferences.java +++ b/mobile/android/base/GeckoPreferences.java @@ -142,7 +142,7 @@ public class GeckoPreferences @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String prefName = preference.getKey(); - if (prefName.equals("privacy.masterpassword.enabled")) { + if (prefName != null && prefName.equals("privacy.masterpassword.enabled")) { showDialog((Boolean)newValue ? DIALOG_CREATE_MASTER_PASSWORD : DIALOG_REMOVE_MASTER_PASSWORD); return false; } diff --git a/mobile/android/base/Tabs.java b/mobile/android/base/Tabs.java index 8a82e54cdd6..f12a2db1de5 100644 --- a/mobile/android/base/Tabs.java +++ b/mobile/android/base/Tabs.java @@ -141,7 +141,7 @@ public class Tabs implements GeckoEventListener { /** Close tab and then select nextTab */ public void closeTab(Tab tab, Tab nextTab) { - if (tab == null) + if (tab == null || nextTab == null) return; GeckoAppShell.sendEventToGecko(new GeckoEvent("Tab:Select", String.valueOf(nextTab.getId()))); diff --git a/mobile/android/base/ui/PanZoomController.java b/mobile/android/base/ui/PanZoomController.java index 7e623476d50..195816e703b 100644 --- a/mobile/android/base/ui/PanZoomController.java +++ b/mobile/android/base/ui/PanZoomController.java @@ -959,6 +959,7 @@ public class PanZoomController mState = PanZoomState.PINCHING; mLastZoomFocus = new PointF(detector.getFocusX(), detector.getFocusY()); GeckoApp.mAppContext.hidePluginViews(); + GeckoApp.mAppContext.mAutoCompletePopup.hide(); cancelTouch(); return true; @@ -1075,6 +1076,7 @@ public class PanZoomController private boolean animatedZoomTo(RectF zoomToRect) { GeckoApp.mAppContext.hidePluginViews(); + GeckoApp.mAppContext.mAutoCompletePopup.hide(); mState = PanZoomState.ANIMATED_ZOOM; final float startZoom = mController.getZoomFactor(); diff --git a/mobile/android/chrome/content/about.xhtml b/mobile/android/chrome/content/about.xhtml index b21d1d40c9e..fc9b3bdeee7 100644 --- a/mobile/android/chrome/content/about.xhtml +++ b/mobile/android/chrome/content/about.xhtml @@ -84,11 +84,12 @@
  • &aboutPage.rights.label;
  • &aboutPage.relNotes.label;
  • &aboutPage.credits.label;
  • +
  • &aboutPage.license.label;
  • -

    &aboutPage.licenseLink;&aboutPage.licenseLinkSuffix; &logoTrademark;

    +

    &logoTrademark;